簡體   English   中英

Java靜態線程安全

[英]Java Static Thread safety

關於這個問題,我有一個子問題

如果非同步靜態方法不修改靜態類變量,它們是否安全?

如果我在Singleton類中定義了此方法

public static Date getDateDiff(Date a, Date b){
    return a-b;
}

如果兩個線程同時並發調用此方法並傳遞不同的a,b,那么它們會得到正確的結果嗎?

我的理解是,它們應該得到,因為每個對象都傳遞了另一個對象無法訪問的不同日期對象。

在什么情況下,由於Date對象的覆蓋而導致錯誤的結果嗎?

是的,兩個線程將獲得正確的結果。 錯誤結果的條件是,如果存在其他任何非線程安全的代碼,其中另一個線程可能正在修改另一個線程之一正在傳遞的a或b。 就像您鏈接到問題中的其他答案一樣,如果a或b與另一個線程共享,並且他們在另一個線程正在使用它時對其進行了修改,則可能會遇到問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM