java.time.Instant(1.8)是线程安全的吗


Instant instant;
void updateBy(){
instant = Instant.now();
}

如果是,如何证明Instant是线程安全的?

根据实现说明下的Instant文档:

这个类是不可变的并且是线程安全的。

如何证明Instant是线程安全的?

分析(使用合理的数学/形式化方法(源代码,以证明它满足线程安全的所有要求。这是证明某些东西是线程安全的唯一方法。

你无法通过测试来证明这一点。

你可以随心所欲地测试非线程安全代码,并通过安全测试。但这并不能证明什么。测试可能在不同的操作系统平台或不同(可能是未来(的Java版本上仍然失败。

(你可以通过测试来证明是某个东西不是线程安全的。如果测试显示出非线程安全行为的无可争议的症状,那就是"存在证明"。(

这对于Instant类来说应该是没有意义的。javadoc指定Instant类是线程安全的。除非您有特定的理由相信该类不是线程安全的(这将是一个真正的JVM错误(,否则建议不要浪费时间寻找可能不存在的东西。

最新更新