さまざまなスレッドからの読み取り (読み取りのみ) に使用されるプライベート LinkedHashMap があります。
class foo {
private LinkedHashMap map = ...;
public publicMethodCalledFromDifferentThreads() {
for (Object foo : map) {
...
}
}
}
この実装はスレッド セーフではないため、for
ループは正しく動作しません。私は自分で解決策を見つけようとしましたが、思いついたのは次のことだけです。
class foo {
private LinkedHashMap map = ...;
private Map.Entry[] mapEntries = map.entrySet().toArray() ...;
public publicMethodCalledFromDifferentThreads() {
for (int i = 0; i < mapEntries.length; i++) {
mapEntries[i]...
...
}
}
}
したがって、最終的には 2 つの変数が必要になり、反復が非常に複雑になります。これを行うための最も良い方法は何でしょうか?
ありがとう!