java同步類容器與併發類容器

同步類容器

經過加鎖來實現容器的複合操做(迭代、跳轉及條件運算),同步類容器如(Vector、HashTable)在併發環境中進行復合操做容易產出ConcurrenModificationException異常。緣由在於當容器迭代的過程當中,被併發的修改了內容。這是由於在早起迭代器的設計中沒有考慮併發的狀況致使的、安全

同步類容器是經過Collections.synchronized***等工廠方法去建立實現的。底層使用傳統的synchronized關鍵字進行同步處理。沒法知足當今時代高併發的需求。併發

併發類容器

jdk5.0提供了多種併發類容器來替代同步類容器從而提升高併發處理能力。同步類容器是串行處理,雖然線程安全,但下降了併發性。ide

併發類容器使用ConcurrentHashMap代替HashTable,使用CopyOnWriterArrayList代替Vector,支持併發的CopyOnWriteArraySet及Queue高併發

ConcurrentHashMap內部使用段(Segment)來表示不一樣部分,最大支持16Segment,在每一個Segment上有本身獨立的鎖,從而達到支持多併發的目的。而且在代碼實現上大多共享變量使用了volatile聲明。進一步提升性能性能

COW容器(Copy on write)寫時複製容器,當進行添加是不直接在原有容器上進行添加,而是複製當前容器,待添加操做完成後,將以前容器的引用指向新的容器,從而實現讀寫分離,進而提升讀的效率。線程

相關文章
相關標籤/搜索