同步块用于并发哈希映射



当使用并发哈希映射时,我是否需要在同步块周围包装放置,是否有竞争条件的机会:

synchronized(lock) {
if(this.map.get(id) != null) {
throw new Exception();
}
this.map.put(id, number);
return true;
}

当使用ConcurrentHashMap时,您不应该像在上面的示例中那样进行同步。

通过在map上同步,您将失去使用ConcurrentHashMap的好处,因为它不会在每次访问时锁定整个表。

在这种情况下,您应该使用原子操作putIfAbsent。

在多线程方式下使用时,您获得的是map的吞吐量。

最新更新