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

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

4

2 回答 2

4

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

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

于 2018-11-21T01:27:33.143 回答
1

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

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

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

您可以以任何方式测试非线程安全代码并通过安全测试。但这并不能证明什么。在不同的操作系统平台或不同的(可能是未来的)Java 版本上,测试可能仍会失败。

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

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

于 2018-11-21T02:07:12.390 回答