首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2019年Java中高级面试题总结(7),228道系列查漏补缺!

82、在多线程环境下,SimpleDateFormat 是线程安全的吗? 83、Java 中如何格式化一个日期?如格式化为 ddMMyyyy 的形式?...c)如果重载的方法参数个数多于 5 个,采用可变参数。 82、在多线程环境下,SimpleDateFormat 是线程安全的吗?...不是,非常不幸,DateFormat 的所有实现,包括 SimpleDateFormat 都不是线程安全的,因此你不应该在多线程序中使用,除非是在对外线程安全的环境中使用,如 将 SimpleDateFormat...如果你不这么做,在解析或者格式化日期的时候,可能会获取到一个不正确的结果。因此,从日期、时间处理的所有实践来说,我强力推荐 joda-time 库。 83、Java 中如何格式化一个日期?...使用SimpleDateFormat来实现格式化日期,但是DateFormat 的所有实现,包括 SimpleDateFormat 都不是线程安全的,因此你不应该在多线程序中使用,除非是在对外线程安全的环境中使用

1.6K00

为什么建议使用你LocalDateTime,而不是Date?

对时间进行格式化,但SimpleDateFormat是线程不安全的 SimpleDateFormat的format方法最终调用代码: private StringBuffer format(Date date...当多个线程同时使用相同的SimpleDateFormat对象【如用static修饰的SimpleDateFormat】调用format方法时,多个线程会同时调用calendar.setTime方法,可能一个线程刚设置好...中中属性设置cal 返回设置好的cal对象 但是这三步不是原子操作 多线程并发如何保证线程安全 避免线程之间共享一个SimpleDateFormat对象,每个线程使用时都创建一次SimpleDateFormat...对象 => 创建和销毁对象的开销大 对使用format和parse方法的地方进行加锁 => 线程阻塞性能差 使用ThreadLocal保证每个线程最多只创建一次SimpleDateFormat对象 =>...较好的方法 Date对时间处理比较麻烦,比如想获取某年、某月、某星期,以及n天以后的时间,如果用Date来处理的话真是太难了,你可能会说Date类不是有getYear、getMonth这些方法吗,获取年月日很

1.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    为什么建议你使用LocalDateTime而不是Date?

    Date如果不格式化,打印出的日期可读性差 Tue Sep 10 09:34:04 CST 2019 使用SimpleDateFormat对时间进行格式化,但SimpleDateFormat是线程不安全的...当多个线程同时使用相同的SimpleDateFormat对象【如用static修饰的SimpleDateFormat】调用format方法时,多个线程会同时调用calendar.setTime方法,可能一个线程刚设置好...calb中中属性设置cal 3.返回设置好的cal对象 但是这三步不是原子操作 多线程并发如何保证线程安全 - 避免线程之间共享一个SimpleDateFormat对象,每个线程使用时都创建一次SimpleDateFormat...对象 => 创建和销毁对象的开销大 - 对使用format和parse方法的地方进行加锁 => 线程阻塞性能差 - 使用ThreadLocal保证每个线程最多只创建一次SimpleDateFormat对象...=> 较好的方法 Date对时间处理比较麻烦,比如想获取某年、某月、某星期,以及n天以后的时间,如果用Date来处理的话真是太难了,你可能会说Date类不是有getYear、getMonth这些方法吗

    2.1K10

    为什么建议使用你 LocalDateTime ,而不是 Date?

    Date如果不格式化,打印出的日期可读性差 Tue Sep 10 09:34:04 CST 2019 使用SimpleDateFormat对时间进行格式化,但SimpleDateFormat是线程不安全的...返回设置好的cal对象 但是这三步不是原子操作 多线程并发如何保证线程安全 - 避免线程之间共享一个SimpleDateFormat对象,每个线程使用时都创建一次SimpleDateFormat对象 =...> 创建和销毁对象的开销大 - 对使用format和parse方法的地方进行加锁 => 线程阻塞性能差 - 使用ThreadLocal保证每个线程最多只创建一次SimpleDateFormat对象 =>...较好的方法 Date对时间处理比较麻烦,比如想获取某年、某月、某星期,以及n天以后的时间,如果用Date来处理的话真是太难了,你可能会说Date类不是有getYear、getMonth这些方法吗,获取年月日很...相比,DateTimeFormatter是线程安全的 小结 LocalDateTime`:`Date`有的我都有,`Date`没有的我也有,日期选择请`Pick Me ================

    1.1K20

    为什么建议使用你 LocalDateTime ,而不是 Date?

    Date如果不格式化,打印出的日期可读性差 Tue Sep 10 09:34:04 CST 2019 使用SimpleDateFormat对时间进行格式化,但SimpleDateFormat是线程不安全的...返回设置好的cal对象 但是这三步不是原子操作 多线程并发如何保证线程安全 - 避免线程之间共享一个SimpleDateFormat对象,每个线程使用时都创建一次SimpleDateFormat对象 =...> 创建和销毁对象的开销大 - 对使用format和parse方法的地方进行加锁 => 线程阻塞性能差 - 使用ThreadLocal保证每个线程最多只创建一次SimpleDateFormat对象 =>...较好的方法 Date对时间处理比较麻烦,比如想获取某年、某月、某星期,以及n天以后的时间,如果用Date来处理的话真是太难了,你可能会说Date类不是有getYear、getMonth这些方法吗,获取年月日很...相比,DateTimeFormatter是线程安全的 小结 LocalDateTime`:`Date`有的我都有,`Date`没有的我也有,日期选择请`Pick Me =================

    1.6K20

    什么在代码中要求我们使用LocalDateTime而不是Date?

    对时间进行格式化,但SimpleDateFormat是线程不安全的SimpleDateFormat的format方法最终调用代码: private StringBuffer format(Date date...当多个线程同时使用相同的SimpleDateFormat对象【如用static修饰的SimpleDateFormat】调用format方法时,多个线程会同时调用calendar.setTime方法,可能一个线程刚设置好...calb中中属性设置cal c、返回设置好的cal对象 但是这三步不是原子操作 多线程并发如何保证线程安全 - 避免线程之间共享一个SimpleDateFormat对象,每个线程使用时都创建一次SimpleDateFormat...对象 => 创建和销毁对象的开销大 - 对使用format和parse方法的地方进行加锁 => 线程阻塞性能差 - 使用ThreadLocal保证每个线程最多只创建一次SimpleDateFormat对象...=> 较好的方法 1.Date对时间处理比较麻烦,比如想获取某年、某月、某星期,以及n天以后的时间,如果用Date来处理的话真是太难了,你可能会说Date类不是有getYear、getMonth这些方法吗

    1.1K20

    为什么建议使用你 LocalDateTime ,而不是 Date?

    SimpleDateFormat对时间进行格式化,但SimpleDateFormat是线程不安全的SimpleDateFormat的format方法最终调用代码: private StringBuffer...返回设置好的cal对象 但是这三步不是原子操作 多线程并发如何保证线程安全 - 避免线程之间共享一个SimpleDateFormat对象,每个线程使用时都创建一次SimpleDateFormat对象 =...> 创建和销毁对象的开销大 - 对使用format和parse方法的地方进行加锁 => 线程阻塞性能差 - 使用ThreadLocal保证每个线程最多只创建一次SimpleDateFormat对象 =>...较好的方法 Date对时间处理比较麻烦,比如想获取某年、某月、某星期,以及n天以后的时间,如果用Date来处理的话真是太难了,你可能会说Date类不是有getYear、getMonth这些方法吗,获取年月日很...相比,DateTimeFormatter是线程安全的 小结 LocalDateTime`:`Date`有的我都有,`Date`没有的我也有,日期选择请`Pick Me =================

    1.1K10

    更正《深入理解高并发编程(第1版)》中的一处错误!

    最近,有小伙伴看了我写的《深入理解高并发编程(第1版)》或者在 冰河技术 公号看了《高并发之——SimpleDateFormat类的线程安全问题和解决方案》一文,对文中SimpleDateFormat类线程不安全问题的分析产生了疑惑...因此, SimpleDateFormat类不是线程安全的根本原因是:DateFormat类中的Calendar对象被多线程共享,而Calendar对象本身不支持线程安全。...附更正后的完整文章 首先问下大家:你使用的SimpleDateFormat类还安全吗?为什么说SimpleDateFormat类不是线程安全的?带着问题从本文中寻求答案。...因此, SimpleDateFormat类不是线程安全的根本原因是:DateFormat类中的Calendar对象被多线程共享,而Calendar对象本身不支持线程安全。...所有线程格式化日期成功 需要注意的是,虽然这种方式能够解决SimpleDateFormat类的线程安全问题,但是由于在程序的执行过程中,为SimpleDateFormat类对象加上了synchronized

    1.6K30

    高并发之——SimpleDateFormat类的线程安全问题和解决方案

    首先问大家一个问题:你使用的SimpleDateFormat类还安全吗?我们一起带着这个问题来看本文。 提起SimpleDateFormat类,想必做过Java开发的童鞋都不会感到陌生。...类格式化日期时抛出了异常,SimpleDateFormat类不是线程安全的!!!...在高并发场景下,一个线程对ParsePosition类中的索引进行修改,势必会影响到其他线程对ParsePosition类中索引的读操作。这就造成了线程的安全问题。...所有线程格式化日期成功 需要注意的是,虽然这种方式能够解决SimpleDateFormat类的线程安全问题,但是由于在程序的执行过程中,为SimpleDateFormat类对象加上了synchronized...6.joda-time方式 joda-time是第三方处理日期时间格式化的类库,是线程安全的。如果使用joda-time来处理日期和时间的格式化,则需要引入第三方类库。

    2.2K41

    从入门到精通:SimpleDateFormat类高深用法,让你的代码更简洁!

    缺点:SimpleDateFormat是线程不安全的,不适合在多线程环境中使用。对于某些日期格式,如年月日时分秒毫秒,需要使用一些特定的字符表示,这些字符具有一定的难度和复杂性。...但要注意,由于SimpleDateFormat线程不安全,需要在多线程环境中使用时进行同步处理,或者使用线程安全的替代品,如Joda-Time库中的DateTimeFormatter。...4.线程安全  SimpleDateFormat类不是线程安全的,因为它的内部状态可以被多个线程同时修改。如果要在多线程环境下使用它,可以使用ThreadLocal来实现线程隔离。  ...但是需要注意的是它不是线程安全的,如果在多线程环境下使用,需要进行同步处理,或者使用ThreadLocal来实现线程局部变量。...需要注意的是,由于SimpleDateFormat是线程不安全的类,在多线程环境中需要进行同步处理,或者使用线程安全的替代品。

    23931

    【JavaSE专栏43】Java常用类SimpleDateFormat解析,轻松解决日期格式化问题

    在 Java 中,常用的日期格式化器有 SimpleDateFormat 类,它提供了一组格式化模式,可以将日期对象格式化为字符串,或将字符串解析为日期对象。...同时,需要注意 SimpleDateFormat 类不是线程安全的,如果在多线程环境下使用,建议进行适当的同步处理或使用线程安全的替代类,如 ·java.time.format.DateTimeFormatter...需要注意的是,SimpleDateFormat 类不是线程安全的,因此在多线程环境下使用时需要进行适当的同步处理或使用线程安全的替代类,如 java.time.format.DateTimeFormatter...五、SimpleDateFormat 类是否线程安全? SimpleDateFormat 类不是线程安全的,因为它的方法是可变的,可以修改内部状态。...如果在多个线程中共享SimpleDateFormat对象,需要采取同步措施来确保线程安全性。

    1.5K50

    Java时间处理-LocalDateTime简介

    在项目开发过程中经常遇到日期时间处理,但是你真的用对了吗,理解阿里巴巴开发手册中禁用static修饰SimpleDateFormat吗 通过本篇文章将了解到 为什么需要LocalDate、LocalTime...Date如果不格式化,打印出的日期可读性差 Tue Oct 20 09:21:53 CST 2020 使用SimpleDateFormat对时间进行格式化,但SimpleDateFormat是线程不安全的...time值另外的一个线程马上把设置的time值给修改了导致返回的格式化时间可能是错误的。...多线程并发如何保证线程安全 避免线程之间共享一个SimpleDateFormat对象,每个线程使用时都创建一次SimpleDateFormat对象 => 创建和销毁对象的开销大 对使用format和parse...方法的地方进行加锁 => 线程阻塞性能差 使用ThreadLocal保证每个线程最多只创建一次SimpleDateFormat对象 => 较好的方法 使用java8全新的日期和时间API LocalDate

    1.4K20

    【Java 基础篇】Java日期和时间格式化与解析指南:SimpleDateFormat详解

    格式化日期和时间 一旦有了 SimpleDateFormat 对象,你可以使用它的 format() 方法将日期和时间对象格式化成字符串。...线程安全性 需要注意的是,SimpleDateFormat 类并不是线程安全的。如果多个线程同时访问同一个 SimpleDateFormat 对象,可能会导致并发问题。...类并不是线程安全的。...、安全,避免潜在的问题: 线程安全性:SimpleDateFormat 类不是线程安全的,因此在多线程环境下使用时需要额外小心。...通过了解日期时间格式字符串和模式字母的用法,你可以创建自定义的日期时间格式。但要注意,SimpleDateFormat 不是线程安全的,因此在线程环境下使用时需要额外小心。

    2.9K20

    分享 Java 常见面试题及答案(下)

    66)在我 Java 程序中,我有三个 socket,我需要多少个线程来处理? 67)Java 中怎么创建 ByteBuffer? 68)Java 中,怎么读写 ByteBuffer ?...c)如果重载的方法参数个数多于 5 个,采用可变参数。 Date、Time 及 Calendar 的面试题 82)在多线程环境下,SimpleDateFormat 是线程安全的吗?...(答案) 不是,非常不幸,DateFormat 的所有实现,包括 SimpleDateFormat 都不是线程安全的,因此你不应该在多线程序中使用,除非是在对外线程安全的环境中使用,如 将 SimpleDateFormat...如果你不这么做,在解析或者格式化日期的时候,可能会获取到一个不正确的结果。因此,从日期、时间处理的所有实践来说,我强力推荐 joda-time 库。 83)Java 中如何格式化一个日期?...如格式化为 ddMMyyyy 的形式?(答案) Java 中,可以使用 SimpleDateFormat 类或者 joda-time 库来格式日期。

    1.1K20

    【JAVA-Day44】深度解析Java SimpleDateFormat

    我们将详细解释它的作用、方法、应用场景、面试题,以及性能优化等方面的内容。如果你对日期格式化和解析有兴趣,或者需要在Java中处理日期时间数据,那么本文将为你提供深入的见解。...引言 Java中,处理日期时间数据是一个常见的需求。SimpleDateFormat是一个重要的工具,它用于格式化日期时间字符串,或将字符串解析为日期对象。...这个类在Java中扮演着关键的角色,允许开发者以不同的方式展示日期时间信息。但需要注意,SimpleDateFormat是线程不安全的,因此在多线程环境下需要特别小心,可能需要进行同步处理。...使用线程安全的替代方案:如果在多线程环境中使用SimpleDateFormat仍然有问题,可以考虑使用线程安全的日期时间处理类,如java.time.format.DateTimeFormatter,它在...三、SimpleDateFormat类的方法 3.1 format format方法用于将日期对象格式化为字符串。它接受一个日期对象作为参数,然后返回一个格式化后的字符串。

    11510

    Android技能树 — 时间相关总体小结

    Date dd1 = new Date(); dd1.setTime(dd1.getTime()+6*60*60*1000); //'当前有些人会说Date不是有个setHours()方法吗?...2.1 DateFormat: DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。...日期/时间格式化子类(如SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。...同步日期格式不是同步的。建议为每个线程创建独立的格式实例。如果多个线程同时访问一个格式,则它必须保持外部同步。...2.3.1 字符串转换时间对象: // 定义一个任意格式的日期时间字符串 String str1 = "2014==04==12 01时06分09秒"; // 根据需要解析的日期、时间字符串定义解析所用的格式器

    15421

    Java 面试问题大全

    并且需要知道 clone() 方法是一个本地方法,这意味着它是由 c 或 c++ 或 其他本地语言实现的。 23)Java 中 ++ 操作符是线程安全的吗? 不是线程安全的操作。...c)如果重载的方法参数个数多于 5 个,采用可变参数。 Date、Time 及 Calendar 的面试题 82)在多线程环境下,SimpleDateFormat 是线程安全的吗?...不是,非常不幸,DateFormat 的所有实现,包括 SimpleDateFormat 都不是线程安全的,因此你不应该在多线程序中使用,除非是在对外线程安全的环境中使用,如 将 SimpleDateFormat...如果你不这么做,在解析或者格式化日期的时候,可能会获取到一个不正确的结果。因此,从日期、时间处理的所有实践来说,我强力推荐 joda-time 库。 83)Java 中如何格式化一个日期?...如格式化为 ddMMyyyy 的形式? Java 中,可以使用 SimpleDateFormat 类或者 joda-time 库来格式日期。

    92240

    玩转 Java 时间 + 面试题

    SimpleDateFormat 是线程安全的吗?为什么? 答:SimpleDateFormat 是非线程安全的。...因为查看 SimpleDateFormat 的源码可以得知,所有的格式化和解析,都需要通过一个中间对象进行转换,这个中间对象就是 Calendar,这样的话就造成非线程安全。...试想一下当我们有多个线程操作同一个 Calendar 的时候后来的线程会覆盖先来线程的数据,那最后其实返回的是后来线程的数据,因此 SimpleDateFormat 就成为了非线程的了。 8....答:保证 SimpleDateFormat 线程安全的方式如下: 使用 Synchronized,在需要时间格式化的操作使用 Synchronized 关键字进行包装,保证线程堵塞格式化; 手动加锁,把需要格式化时间的代码...答:JDK 8 中的优点具体有以下几个优点,如下: 线程安全性 使用的便利性(如获取当前时间戳的便利性、增减日期的便利性等) 编写代码更简单优雅,如当前时间的格式化:LocalDateTime.now(

    1.1K40
    领券