在这篇文章中: Can we use Synchronized for each entry instead of ConcurrentHashMap?
我问我们是否可以使用Synchronized块来仅锁定HashMap的条目,我知道我们不能这样做。现在,我的问题是,如果我们有一个ConcurrentHashMap(不是hashMap),其值为ArrayList或TreeMap,那么我可以使用该方法(使用synchronized)。这就是我的意思:
ConcurrentHashMap<String, ArrayList<String>> map = new ConcurrentHashMap<>();
synchronized (map.get("key")) {
//do something with the array thread-safely,
}
安全吗?我问的原因是我不知道如何通过测试来检查这类问题。
答案 0 :(得分:0)
只要您使用putIfAbsent
操作,它就是线程安全的。您将始终在同一对象引用上进行同步(阻塞)。