java SimpleDateFormat线程安全
来源:互联网 发布:美国大选重新计票 知乎 编辑:程序博客网 时间:2024/06/01 10:11
java SimpleDateFormat 线程安全问题
程序测试:
无问题,模拟tomcat环境,使用多线程请求报错java.lang.NumberFormatException.forInputString
,排查为SimpleDateFormat线程安全问题,SimpleDateFormat类内部有一个Calendar对象引用,它用来储存和这个sdf相关的日期信息,例如sdf.parse(dateStr), sdf.format(date) 诸如此类的方法参数传入的日期相关String, Date等等, 都是交友Calendar引用来储存的.这样就会导致一个问题,如果你的sdf是个static的, 那么多个thread 之间就会共享这个sdf, 同时也是共享这个Calendar引用,多线程同时调用static SimpleDateFormat,会导致某些线程的calendar数据被清空了,从而导致报错
问题处理:
静态static SimpleDateFormat tmp = new SimpleDateFormat("yyyyMMddHHmmss")方法改成SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"),new SimpleDateFormat对象性能影响不大;或者改成单列模式。
程序测试:
无问题,模拟tomcat环境,使用多线程请求报错java.lang.NumberFormatException.forInputString
,排查为SimpleDateFormat线程安全问题,SimpleDateFormat类内部有一个Calendar对象引用,它用来储存和这个sdf相关的日期信息,例如sdf.parse(dateStr), sdf.format(date) 诸如此类的方法参数传入的日期相关String, Date等等, 都是交友Calendar引用来储存的.这样就会导致一个问题,如果你的sdf是个static的, 那么多个thread 之间就会共享这个sdf, 同时也是共享这个Calendar引用,多线程同时调用static SimpleDateFormat,会导致某些线程的calendar数据被清空了,从而导致报错
问题处理:
静态static SimpleDateFormat tmp = new SimpleDateFormat("yyyyMMddHHmmss")方法改成SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"),new SimpleDateFormat对象性能影响不大;或者改成单列模式。
阅读全文
1 0
- java SimpleDateFormat线程安全
- SimpleDateFormat非线程安全
- SimpleDateFormat非线程安全
- SimpleDateFormat 转为线程安全
- SimpleDateFormat 非线程安全
- 线程安全之SimpleDateFormat
- SimpleDateFormat线程安全
- SimpleDateFormat非线程安全
- SimpleDateFormat非线程安全
- 线程安全的 SimpleDateFormat
- Java多线程编程7--SimpleDateFormat非线程安全处理
- SimpleDateFormat 解决非线程安全
- SimpleDateFormat线程安全的问题
- 非线程安全类SimpleDateFormat
- java SimpleDateFormat线程不安全
- ThreadLocal 解决SimpleDateFormat非线程安全
- ThreadLocal 解决SimpleDateFormat非线程安全
- JDK中的SimpleDateFormat线程非安全
- RecyclerView的监听与简介的上拉刷新
- sql基础拾遗
- 关于debug
- 临时文件
- mybatis对时间段查询以及转义字符
- java SimpleDateFormat线程安全
- day_06_拷贝构造、拷贝赋值、静态成员
- 集合框架——Map集合
- 轻量级文本代码编辑工具
- 【CodeForces】426Div2 B The Festive Evening
- Codeforces Round 834B-The Festive Evening
- 【机器学习PAI实践十二】机器学习算法基于信用卡消费记录做信用评分
- NYOJ 364 田忌赛马
- linux学习笔记(9)