我一直在寻找代码来演示在多线程环境中使用旧版日期或日历类时可能发生的情况,但我似乎找不到任何好的示例,找到了几个与 DateFormatter 无关,但仅与上述两个类中的任何一个无关,总是提到它们不是线程安全的,但没有代码示例!
有哪位好心人可以举个例子吗?或许可以与线程安全的新 Java 8 Date 类进行比较。
最佳答案
首先,java Date 是可变的并保持状态 -> Date 有可能不是线程安全的。
由于 java Date 包含该字段的状态(transient long fastTime)以及 getter 和 setter,因此 Date 可能不是线程安全的。
但是设置和获取 long 值时不是原子操作吗?如果您在 32 位操作系统中运行代码,则将 long 设置为原始字段不是原子操作,因为 long 和 double 值被视为两个 32 位值,这就是原因。
关于java - 证明旧的 Date Java API 不是线程安全的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51700659/