Javadocから
Map m = Collections.synchronizedMap(new HashMap());
...
Set s = m.keySet(); // Needn't be in synchronized block
...
synchronized(m) { // Synchronizing on m, not s!
Iterator i = s.iterator(); // Must be in synchronized block
while (i.hasNext())
foo(i.next());
}
2 つのクエリ:
1) m.keySet() によって返される Set もコレクション ラッパーですか、それとも非同期セットですか?
編集:
2) m で同期する必要がありますか?
synchronized(m) { // Synchronizing on m, not s!
m の代わりに s で同期できませんか?