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来解决日期格式化问题
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
相关话题
- ConcurrentSkipListSet线程安全有序集合
- 脱敏替换正则
- 解决jenkins tomcat热部署,任务线程重复启动的方法
- SImpleImage解决图片压缩变红问题
- 解决kindeditor中onkeydown不执行的问题
- vue使用provide/inject方式解决刷新当前页面问题
- 解决手机竖拍照片旋转90度问题
- Mybatis解决oracle in语句 1000个数限制的问题
- 解决Spring Boot+AngularJS因为跨域导致Session丢失问题
- 解决安卓浏览器文本无法垂直居中的问题
- 解决Docker内部时区和宿主机不一致问题
- 解决IE浏览器不支持Spring MVC 文件下载的问题
- RateLimiter限流问题
- 解决root用户和普通用户的时区不一致的问题
- 解决执行脚本报syntax error: unexpected end of file或syntax error near unexpected token `fi'错误的问题