我一直在寻找代码来演示在多线程环境中使用旧的Date或Calendar类时可能发生的事情,但是我似乎找不到任何好的例子,找到了几个使用DateFormatter,但仅在任何地方提到的两个类中的任何一个都没有,总是提到它们不是线程安全的,但是没有代码示例!
有人愿意提供一个例子吗?也许与线程安全的新Java 8 Date类相比。
答案 0 :(得分:3)
首先,java日期是可变的并处于保持状态-> Date可能不是线程安全的。
由于Java Date包含状态(瞬态的long fastTime)以及该字段的getter和setter,因此Date可能不是线程安全的。
但是,设置和获取长值不是原子操作吗?如果在32位操作系统中运行代码,则将long设置为基本字段不是原子操作,因为long和double值被视为两个32位值,这就是原因。