深入理解Java:SimpleDateFormat安…

来源:互联网 发布:linux more怎么翻页 编辑:程序博客网 时间:2024/05/16 18:29
深入理解Java:SimpleDateFormat安全的时间格式化

http://www.cnblogs.com/peida/archive/2013/05/31/3070790.html

我们在开发和设计系统的时候注意下一下三点:

  1.自己写公用类的时候,要对多线程调用情况下的后果在注释里进行明确说明
  2.对线程环境下,对每一个共享的可变变量都要注意其线程安全性
  3.我们的类和方法在做设计的时候,要尽量设计成无状态的

解决办法

   1.需要的时候创建新实例
      说明:在需要用到SimpleDateFormat的地方新建一个实例,不管什么时候,将有线程安全问题的对象由共享变为局部私有都能避免多线程问题,不过也加重了创建对象的负担。在一般情况下,这样其实对性能影响比不是很明显的。

 2.使用同步:同步SimpleDateFormat对象
      说明:当线程较多时,当一个线程调用该方法时,其他想要调用此方法的线程就要block,多线程并发量大的时候会对性能有一定的影响。

3.使用ThreadLocal:
 说明:使用ThreadLocal,也是将共享变量变为独享,线程独享肯定能比方法独享在并发环境中能减少不少创建对象的开销。如果对性能要求比较高的情况下,一般推荐使用这种方法。

4.抛弃JDK,使用其他类库中的时间格式化类:

  1.使用Apache commons里的FastDateFormat,宣称是既快又线程安全的SimpleDateFormat, 可惜它只能对日期进行format,不能对日期串进行解析。

  2.使用Joda-Time类库来处理时间相关问题

threadlocal代码参见本人的CSDN博客http://blog.csdn.net/mary881225/article/details/61915574


0 0
原创粉丝点击