为什么要在SyncedMap或SyncedCollections上进行同步?
2022-09-03 13:56:58
我指的是这里提出的问题,并使用作者代码示例,现在我的问题是
- 为什么作者使用,这真的是必要的,因为syncedMap将始终确保没有两个线程试图做操作,那么为什么我们需要在那个地图本身上?
synchronized(synchronizedMap)
read/put
Map
synchronize
真的非常感谢解释。
public class MyClass {
private static Map<String, List<String>> synchronizedMap =
Collections.synchronizedMap(new HashMap<String, List<String>>());
public void doWork(String key) {
List<String> values = null;
while ((values = synchronizedMap.remove(key)) != null) {
//do something with values
}
}
public static void addToMap(String key, String value) {
synchronized (synchronizedMap) {
if (synchronizedMap.containsKey(key)) {
synchronizedMap.get(key).add(value);
}
else {
List<String> valuesList = new ArrayList<String>();
valuesList.add(value);
synchronizedMap.put(key, valuesList);
}
}
}
}