Java的SimpleDateFormat坑

问题

在多线程中,如果采用SimpleDateFormat直接进行日期转化需要注意,有坑,SimpleDateFormat的parser等方法非线程安全,有两个办法解决,一个通过线程本地变量。
当然如果你每次都new一个SimpleDateFormat对象没问题,不过这样比较耗性能。

解决办法

1.通过线程的本地变量解决

    private static ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>(); 

     public static DateFormat IndexDayModeFormat()   
        {  
            DateFormat df = threadLocal.get();  
            if(df==null){  
                df = new SimpleDateFormat("yyyyMMdd");  
                threadLocal.set(df);  
            }  
            return df;  
        }  

 
 collectionDate = IndexDayModeFormat().parse(dateTime);

2.使用FastDateFormat

    dirDateFormat = FastDateFormat.getInstance("yyyyMMdd");

其他用法类似,需要引入的jar

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.5</version>
        </dependency>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • 相关概念 面向对象的三个特征 封装,继承,多态.这个应该是人人皆知.有时候也会加上抽象. 多态的好处 允许不同类对...
    东经315度阅读 2,005评论 0 8
  • 朝望 八零年夏天,我怀着忐忑不安的心情和一个伙伴到乡镇东兴中学校长办去查看中考成绩,因为我那时读的附中,不...
    潮望阅读 122评论 4 5
  • 探春,是红楼里我最喜爱的人物。 小时候看红楼梦,读来最痛快的有两个场景。 一个是寿怡红群芳开夜宴,说的是宝玉过生日...
    山心与红阅读 515评论 0 2
  • 在本篇故事当中,罗扮演的是,一个反派角色。但是这个人也有,他的精彩之处。在剧中,我们可以看到她是怎样一步步把老马从...
    达聪阅读 5,150评论 0 1