繁体   English   中英

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

[英]java.time.Instant (1.8) is thread safe?

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

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

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

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

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

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

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

您可以按任何方式测试非线程安全代码,并通过安全测试。 但这并不能证明任何事情。 在不同的OS平台或不同的Java版本(可能是将来的版本)上,测试仍可能失败。

(您可以通过测试来证明某些事情不是线程安全的。如果测试显示了非线程安全行为的无可争辩的症状,那就是“存在证明”。)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM