并发编程-14线程安全策略之并发容器(J.U.C)中的集合类
文章目錄
- J.U.C總覽
- 腦圖
- 概述
- 并發容器特性
- 示例
- ArrayList對應的線程安全的并發容器類CopyOnWriteArrayList (線程安全)
- HashSet對應的線程安全的并發容器類CopyOnWriteArraySet (線程安全)
- TreeSet對應的線程安全的并發容器類 ConcurrentSkipListSet (線程安全)
- TreeMap對應的線程安全的并發容器類ConcurrentSkipListMap (線程安全)
- HashMap對應的線程安全的并發容器類ConcurrentHashMap (線程安全)
- 代碼
J.U.C總覽
腦圖
同步容器:
并發容器
概述
同步容器是通過synchronized來實現同步的,所以性能較差。而且同步容器也并不是絕對線程安全的,在一些特殊情況下也會出現線程不安全的行為。那么有沒有更好的方式代替同步容器呢?----> 那就是并發容器,有了并發容器后同步容器的使用也越來越少的,大部分都會優先使用并發容器(J.U.C). 下篇博文我們討論下J.U.C
并發容器特性
-
CopyOnWriteArrayList、CopyOnWriteArraySet因為需要copy數組,需要消耗內存,可能引發yonggc或者 fullgc,并且不能做到實時性,適合讀多寫少的情景
-
ConcurrentSkipListSet 支持自然排序,并且可以在構造的時候自己定義比較器,可以保證每一次的操作是原子性的,比如add()、remove等,但是對于批量操作,如addAll()等并不能保證原子性(需要自己手動做同步操作,如加鎖等)
-
ConcurrentHashMap針對讀操作做了大量的優化,這個類具有特別高的并發性,高并發場景下有特別好的表現
-
ConcurrentSkipListMap與ConcurrentHashMap相比的key是有序的,它支持更高的并發,它的存取時間和線程數是沒有關系的,在一定的數據量下,并發的線程越多ConcurrentSkipListMap越能體現出它的優勢來
示例
ArrayList對應的線程安全的并發容器類CopyOnWriteArrayList (線程安全)
運行結果:線程安全
HashSet對應的線程安全的并發容器類CopyOnWriteArraySet (線程安全)
運行結果:線程安全
TreeSet對應的線程安全的并發容器類 ConcurrentSkipListSet (線程安全)
運行結果:線程安全
TreeMap對應的線程安全的并發容器類ConcurrentSkipListMap (線程安全)
運行結果:線程安全
HashMap對應的線程安全的并發容器類ConcurrentHashMap (線程安全)
運行結果:線程安全
代碼
https://github.com/yangshangwei/ConcurrencyMaster
總結
以上是生活随笔為你收集整理的并发编程-14线程安全策略之并发容器(J.U.C)中的集合类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 并发编程-13线程安全策略之两种类型的同
- 下一篇: 并发编程-15并发容器(J.U.C)核心