Java多线程之同步容器与并发容器
同步容器
Vector
Hashtable
Collections.synchronziedXX
并发容器
ConcurrentMap
基於Hashtable,
段Segement,最大16個
把粒度分細,
每個段有自己的鎖
共享變量用volatile關鍵字,第一時間獲得修改數據。從主內存讀取,不從工作內存讀取
CopyonWrite容器
-
JDK有兩種COW容器
- CopyOnWriteArrayList
- CopyOnWriteArraySet
CopyonWrite容器,寫時複製容器。當我們往一個容器加元素時,不直接想當前容器添加,而是先複製當前容器,得出一個新容器,再往新容器加元素,加完後,再將原來容器的引用,指向新容器
這樣的好處是,可以對CopyOnWrite容器進行并发讀,而不需要加鎖,因為當前容器不會添加任何元素
這是一種讀寫分離的思想,讀和寫在不同的容器
適合讀多寫少場景
小結
并发容器提升了同步容器的性能,但不是说,并发容器就能解决所有并发问题
上一篇:
通过多线程提高代码的执行效率例子