往期精选

  ●  架构师高并发高性能分布式教程(4000G)

  ●  39阶段精品云计算大数据实战视频教程

  ●  互联网技术干货视频教程大全【菜单为准】

  ●  2017年8月最新Intellij IDEA全套视频教程

  ●  程序员如何制作高质量的简历【视频+简历】

  ●  两套大型电商实战项目 

  ●  200本经典编程相关书籍下载

`

  • parse 方法为什么不线程安全

1.有一个共享变量calendar,而这个共享变量的访问没有做到线程安全

2.parse方法生成CalendarBuilder,然后通过CalendarBuilder 设值到calendar,最后calendar.getTime();

为什么SimpleDateFormat线程不安全_其他

3.api方法说明 This parsing operation uses the calendar to produce a Date. All of the calendar's date-time fields are cleared before parsing, and the calendar's default values of the date-time fields are used for any missing date-time information.

  • format方法为什么不线程安全

1.有一个共享变量calendar,而这个共享变量的访问没有做到线程安全

2.当使用format方法时,实际是给calent共享变量设置date值,然后调用subFormat将date转化成字符串

为什么SimpleDateFormat线程不安全_其他_02

--------------------

为什么SimpleDateFormat线程不安全_其他_03

-------------------

为什么SimpleDateFormat线程不安全_其他_04

  • 解决方案

1.创建一个共享的SimpleDateFormat实例变量,但是在使用的时候,需要对这个变量进行同步

2.使用ThreadLocal为每个线程都创建一个线程独享SimpleDateFormat变量

3.需要的时候创建局部变量

作者:LION

`