【发布时间】:2017-12-01 09:10:36
【问题描述】:
在多线程应用程序中,是否存在在需要时使用带同步功能的 HashMap 比使用 ConcurrentHashMap 更好的场景?
具体来说,我正在考虑这样一个地图初始化的应用程序:
Map<String,String> map = new HashMap<>();
每个线程访问地图只是为了更新它并立即将其转换为字符串,因此唯一同步的块是:
synchronized(map) {
map.put(key,value);
StringBuilder sb = new StringBuilder();
for (String k: map.keySet())
sb.append("("+k+","+map.get(k)+")");
}
在这种情况下,将初始化更改为:
Map<String,String> map = new ConcurrentHashMap<>();
并删除“同步”?
【问题讨论】:
-
为什么不用
String sb = map.toString();替换它呢?具体格式? -
@Kayaman 是的,仅用于格式。
标签: java concurrency thread-safety