java.time.Instant (1.8) 线程安全吗?
java.time.Instant (1.8) is thread safe?
Instant instant;
void updateBy(){
instant = Instant.now();
}
如果是,如何证明 Instant 是线程安全的?
根据实施说明下 Instant
的文档:
This class is immutable and thread-safe.
How to prove Instant is thread safe?
分析(使用合理的数学/形式化方法)源代码以证明它满足线程安全的所有要求。这是证明某些东西是线程安全的唯一方法。
你不能通过测试来证明这一点。
您可以以任何方式测试非线程安全代码并通过安全测试。但这并不能证明什么。在不同的 OS 平台或 Java.
的不同(可能是未来)版本上,测试可能仍会失败
(您可以通过测试 证明 某些东西不是线程安全的。如果测试显示非线程安全行为的无可争议的症状,那就是 "existence proof".)
这对于 Instant
class 应该没有实际意义。 javadoc 指定 Instant
class 是线程安全的。除非您有特定理由相信 class 不是线程安全的(这将是 真正的 JVM 错误 ),否则建议您不要浪费时间寻找可能不存在的东西。
Instant instant;
void updateBy(){
instant = Instant.now();
}
如果是,如何证明 Instant 是线程安全的?
根据实施说明下 Instant
的文档:
This class is immutable and thread-safe.
How to prove Instant is thread safe?
分析(使用合理的数学/形式化方法)源代码以证明它满足线程安全的所有要求。这是证明某些东西是线程安全的唯一方法。
你不能通过测试来证明这一点。
您可以以任何方式测试非线程安全代码并通过安全测试。但这并不能证明什么。在不同的 OS 平台或 Java.
的不同(可能是未来)版本上,测试可能仍会失败(您可以通过测试 证明 某些东西不是线程安全的。如果测试显示非线程安全行为的无可争议的症状,那就是 "existence proof".)
这对于 Instant
class 应该没有实际意义。 javadoc 指定 Instant
class 是线程安全的。除非您有特定理由相信 class 不是线程安全的(这将是 真正的 JVM 错误 ),否则建议您不要浪费时间寻找可能不存在的东西。