java - 将 parse() 与 Java SimpleDateFormat 结合使用时的线程安全

标签 java thread-safety simpledateformat

我尽力研究源代码,以找出为什么 SimpleDateFormat 中的 parse() 不是线程安全的。但我仍然不知道在哪里破坏竞争条件

最佳答案

SimpleDateFormat 使用 DateFormat 的 calendar 字段来存储正在解析的当前日期。该字段没有同步,因此并行使用同一个 SimpleDateFormat 对象可能会并行更改calendar 值,从而导致出现乱码结果。

PS——我仔细阅读了这个源代码:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/text/SimpleDateFormat.java#SimpleDateFormat.parse%28java.lang.String%2Cjava.text.ParsePosition%29

YMMV。

关于java - 将 parse() 与 Java SimpleDateFormat 结合使用时的线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36194450/

相关文章:

java - 关于实例变量初始化的线程安全

java - 使用 SimpleDateFormat 解析

java - 寻找一种智能且快速的搜索算法

java - 新手: Using a variable as the rhs argument to the dot operator?

java - RocksDB WriteBatch 线程安全吗?

java - 2010 年的 java 并发修改异常崩溃

java - 使用什么 SimpleDateFormat 模式?

android - 包含时区时,SimpleDateFormat 花费的时间太长

java - 谷歌应用引擎大表

java - 如何将 .jar 文件添加到 BlueJ 项目?