我有一个私有的 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]...
...
}
}
}
所以最后我需要有两个变量,迭代变得非常复杂。最好的方法是什么?
谢谢!