このクラスがスレッドセーフかどうか教えてもらえますか?
class Foo {
private final Map<String,String> aMap;
public Foo() {
aMap = new HashMap<String, String>();
aMap.put("1", "a");
aMap.put("2", "b");
aMap.put("3", "c");
}
public String get(String key) {
return aMap.get(key);
}
}
編集:質問を明確にしないのは私のせいです。JMM FAQによると:
初期化の安全性を新たに保証する必要があります。オブジェクトが適切に構築されている場合 (つまり、そのオブジェクトへの参照が構築中にエスケープされない場合)、そのオブジェクトへの参照を参照するすべてのスレッドは、コンストラクターで設定された最終フィールドの値も参照します。同期。
これにより、aMap へのセットがaMap = new HashMap<String, String>();
. したがって、他のスレッドはこれらを見ることができます
aMap.put("1", "a");
aMap.put("2", "b");
aMap.put("3", "c");
か否か ?
編集:私はこの質問が私の質問に正確に近いことを見つけました