来自权威书籍:Java并发编程实战;
同步容器类在执行每个操作期间都持有一个锁。于HashMap不同,ConcurrentHashMap用了不同的枷锁策越来提供更高的并发性和伸缩性。
ConcurrentHashMap并不是将每个方法都在同一个锁上同步,并使得每次只能有一个线程访问容器,而是用一种粒度更小的枷锁机制来实现更大程度的共享,
这种机制成为分段锁(Lock Striping)。在这种机制中,任意数量的读取线程可以并发的访问Map,执行读取操作的线程和执行写入操作的线程可以并发的访问Map,
并且一定数量的写入线程可以并发的修改Map。ConcurrentHashMap带来的记过是:在并发访问环境下将实现更高的吞吐量,而在单线程环境中值损失非常小的性能。
总结:与Hashtable和synchronizedMap相比,有更多的优势和更少的劣势,只有当应用程序需要枷锁Map进行独占的访问的时候,才应该放弃使用ConcurrentHashMap