DateTimeFormatter替换SimpleDateFormat解决线程安全问题

2018-03-21 21:27:51
1647次阅读
0个评论
SimpleDateFormat并不是线程安全的,因为在SimpleDateFormat中持有一个Calendar类对象在Parse 和Format方法时会调用calendar.setTime(date)方法,如果在多线程环境下运行,会出现线程安全问题,为了解决这个问题,可以使用以下方法: 
1.需要的时候创建新实例 
2.使用同步:同步SimpleDateFormat对象 
3.使用ThreadLocal:  
4.抛弃JDK,使用其他类库中的时间格式化类,使用Apache commons 里的FastDateFormat,使用Joda-Time类库来处理时间相关问题 
以上解决方案可以查看博文http://blog.csdn.net/zxh87/article/details/19414885

这里提供一个 jdk1.8的解决方案,jdk1.8中新增了 LocalDate 与 LocalDateTime等类来解决日期处理方法,同时引入了一个新的类DateTimeFormatter来解决日期格式化问题

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy MM dd");
        LocalDate date = LocalDate.parse("2017 06 17", formatter);
        System.out.println(formatter.format(date));




使用这个类来解析时间就不需要关注线程安全的问题了


收藏00

登录 后评论。没有帐号? 注册 一个。