Java多线程之同步容器与并发容器

来源:互联网 发布:淘宝账号能注销掉吗 编辑:程序博客网 时间:2024/06/08 06:07

同步容器

Vector

Hashtable

Collections.synchronziedXX

并发容器

ConcurrentMap

基於Hashtable,

段Segement,最大16個

把粒度分細,

每個段有自己的鎖

共享變量用volatile關鍵字,第一時間獲得修改數據。從主內存讀取,不從工作內存讀取

CopyonWrite容器

JDK有兩種COW容器
CopyOnWriteArrayList
CopyOnWriteArraySet

CopyonWrite容器,寫時複製容器。當我們往一個容器加元素時,不直接想當前容器添加,而是先複製當前容器,得出一個新容器,再往新容器加元素,加完後,再將原來容器的引用,指向新容器

這樣的好處是,可以對CopyOnWrite容器進行并发讀,而不需要加鎖,因為當前容器不會添加任何元素

這是一種讀寫分離的思想,讀和寫在不同的容器

適合讀多寫少場景

小結

并发容器提升了同步容器的性能,但不是说,并发容器就能解决所有并发问题

0 0