多线程下SimpleDateFormat使用出错

SimpleDateFormat类大家在开发过程中肯定使用过无数次了,它主要用来日期的转换与格式化,但是在多线程的环境下,使用这个类会造成数据转换及处理的不一致性,因为SimpleDateFormat类是线程不安全的。

看一下下边这个错误使用示例:

多线程下SimpleDateFormat使用出错_第1张图片

多线程下SimpleDateFormat使用出错_第2张图片

看运行结果:

多线程下SimpleDateFormat使用出错_第3张图片

从控制台可以看出,使用SimpleDateFormat出错了,造成了数据不一致的问题。

下边我们来看第一个解决方案:

首先增加一个Util工具类

多线程下SimpleDateFormat使用出错_第4张图片

修改我们的run方法

多线程下SimpleDateFormat使用出错_第5张图片

再次看运行结果,全部转换成功,多运行几次,结果一样。

接下来我们再看另一个解决方案:

大家都知道ThreadLocal类能使线程绑定到指定的对象,使用这个类也可以解决多线程下SimpleDateFormat处理异常的情况。

多线程下SimpleDateFormat使用出错_第6张图片

多线程下SimpleDateFormat使用出错_第7张图片

运行main,结果同样是全部转换成功。

小知识点,与大家共同学习。

最后,谢谢大家观看,欢迎大家多多关注、多多转发!!!

最近会每天更新多线程类内容。

你可能感兴趣的:(多线程下SimpleDateFormat使用出错)