1
我有這個代碼,它具有在靜態塊中初始化的共享哈希映射。我不公開hashmap,它使用只讀(get和containKey)。 我想確定這是否是線程安全的。Java HashMap只讀線程安全
public class MyClass {
private static final Map<String, MyObject> myMap;
static {
myMap = new MyLoader().load()
}
public MyClass() {
if (containsKey(someKey)) {
// do something
}
myMap.get(something)
}
static boolean containsKey(String key) {
// do some other stuff
return myMap.containsKey(key)
}
}
只要沒有線程正在修改映射(添加或刪除鍵/值對,或變更現有值),而其他線程正在讀取則線程安全。我沒有包括突變關鍵對象,因爲這會導致問題,無論線程是什麼。 –
它沒有被暴露,並且在類中沒有被修改 –
該方法在寫入映射的整個應用程序中調用'new MyLoader()。load()'_only_事物,並且它是否只寫入一個電話? –