在以下代码中:
private final Map<A, B> entriesMap = Collections
.synchronizedMap(new HashMap<A, B>());
// ...
List<B> entries = new ArrayList<>(this.entriesMap.values());
如果entriesMap
在其他方法中被多个线程访问/修改,是否有必要synchronize
打开entriesMap
?换句话说:
List<B> entries;
synchronize (this.entriesMap) {
entries = new ArrayList<>(this.entriesMap.values());
}
如果我是正确的,values()
不是原子操作,不像put()
and get()
,对吧?
谢谢!