simpledateformat(为什么使用Java的SimpleDateFormat偶尔出现值不正确的情况)

伏羲号

Java 文档有关 SimpleDateFormat 的描述:

simpledateformat(为什么使用Java的SimpleDateFormat偶尔出现值不正确的情况)

“日期格式是非同步的。

建议为每个线程创建单独的日期格式化实例。

如果多个线程并发访问某个格式化实例,则必须保证外部调用同步性。“

正如文档中提到的那样,可以为每个线程设置不同实例来解决这个问题。如果要共享实例,该如何实现?

1. ThreadLocal

可以使用 ThreadLocal 解决。Threadlocal 的 get() 方法会给当前线程提供正确的值。

2.JDK 8 新API

Java8 引入了新的日期时间 API,SimpleDateFormat 有了更好的替代者。如果继续坚持使用 SimpleDateFormat 可以配合 ThreadLocal 一起使用。但既然已经有了更好的选择,还是考虑用新的 API。

Java 8 提供了几个线程安全的日期类,Java 文档中这么描述:

“这个类是具有不可变和线程安全的特点。”

非常值得学习这些类的用法,包括 DateTimeFormatter、OffsetDateTime、ZonedDateTime、LocalDateTime、LocalDate 和 LocalTime。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,98人围观)

还没有评论,来说两句吧...