次のイディオムを持つレガシーコードを見ています:
Map<String, Boolean> myMap = someGlobalInstance.getMap();
synchronized (myMap) {
item = myMap.get(myKey);
}
Intelli-J のコード インスペクションから得られる警告は次のとおりです。
Synchronization on local variable 'myMap'
これは適切な同期ですか? またその理由は?
Map<String, Boolean> myMap = someGlobalInstance.getMap();
synchronized (someGlobalInstance.getMap()) {
item = myMap.get(myKey);
}