我們需要同步這裏private static Map
對象如果多個線程使用getObject
方法,先用給定的密鑰檢查上map
值,如果沒有找到,然後把新的對象使用該密鑰對map
對象。如果多個線程使用公共方法讀取特定鍵的值,我們是否需要在一個私有靜態Map對象上進行同步?
private static Map<String, Object> map = new HashMap<>();
public Object getObject(String key){
Object obj = map.get(key);
if(obj == null){
obj = new Object();
map.put(key, obj);
}
return obj;
}
感謝您的回答,我有一個關於putIfAbsent()的問題,在這裏我們需要傳遞一個新創建的對象,這是不好的,我想創建對象只有當它在地圖中丟失。 –
'map.computeIfAbsent(key,k - > new Object())'。 –
謝謝這會幫助我。 –