簡體   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