使用ConcurrentHashMap

wir*_*her 2 java multithreading

我是Java线程的新手,我需要从几个活动线程访问数据结构。我听说java.util.concurrent.ConcurrentHashMap是线程友好的。synchronized(map){} 访问ConcurrentHashMap时是否需要使用它,否则它将自己处理锁?

Pet*_*rey 5

它自己处理锁,实际上您无权访问它们(没有其他选择)

您可以synchronized在特殊情况下使用写操作,但是很少需要这样做。例如,如果putIfAbsent由于创建对象的成本很高而需要实现自己的实现。

使用syncrhonized进行读取会破坏使用并发集合的目的。

  • 同样,putIfAbsent是原子执行的,在某些情况下非常有用。 (2认同)