- Java 5.0 在 java.util.concurrent 包中提供了多種并發(fā)容器類來改進(jìn)同步容器的性能。
- ConcurrentHashMap 同步容器類是Java 5 增加的一個線程安全的哈希表。對與多線程的操作,介于 HashMap 與 Hashtable 之間。內(nèi)部采用“鎖分段”機(jī)制替代 Hashtable 的獨(dú)占鎖。進(jìn)而提高性能。
- 此包還提供了設(shè)計用于多線程上下文中的 Collection 實(shí)現(xiàn):
ConcurrentHashMap、ConcurrentSkipListMap、ConcurrentSkipListSet、CopyOnWriteArrayList 和 CopyOnWriteArraySet。當(dāng)期望許多線程訪問一個給定 collection 時,ConcurrentHashMap 通常優(yōu)于同步的 HashMap,ConcurrentSkipListMap 通常優(yōu)于同步的 TreeMap。當(dāng)期望的讀數(shù)和遍歷遠(yuǎn)遠(yuǎn)大于列表的更新數(shù)時,CopyOnWriteArrayList 優(yōu)于同步的 ArrayList。
JDK1.8以后ConcurrentHashMap由鎖的分段機(jī)制變?yōu)镃AS。
CopyOnWriteArrayList "寫入并復(fù)制" 是個復(fù)合操作,當(dāng)每次寫入時,都會復(fù)制。添加操作比較多時效率較低。并發(fā)迭代操作多時,可以提高效率。