java 什么是线程同步,java多线程同步集合是什么?并发集合是什么?
java中關于集合的內容也是十分豐富的,而且相關的知識點也是十分多的。多線程集合所涵蓋的范圍是十分廣闊的。今天就來為大家介紹一下,java多線程同步集合是什么以及并發集合是什么?一起來看看吧。
首先我們需要知道的是,無論是同步集合還是并發集合他們都支持線程安全,他們之間主要的區別體現在性能和可擴展性,還有他們如何實現的線程安全。
具體內容如下:
一、同步集合類
3.同步集合包裝類,Collections.synchronizedMap()和Collections.synchronizedList()
二、 并發集合類
1.ConcurrentHashMap
2.CopyOnWriteArrayList
3.CopyOnWriteHashSet
三、性能
同步集合比并發集合會慢得多,主要原因是鎖,同步集合會對整個May或List加鎖
四、并發集合的實現原理
1.ConcurrentHashMap:把整個Map劃分成幾個片段,只對相關的幾個片段上鎖,同時允許多線程訪問其他未上鎖的片段。
2.CopyOnWriteArrayList:允許多個線程以非同步的方式讀,當有線程寫的時候它會將整個List復制一個副本給它。如果在讀多寫少這種對并發集合有利的條件下使用并發集合,這會比使用同步集合更具有可伸縮性。
五、 并發集合的使用建議
1.一般不需要多線程的情況,只用到HashMap、ArrayList,只要真正用到多線程的時候就一定要考慮同步。
2.ConcurrentHashMap實現原理
ConcurrentHashMap是由Segment數組結構和HashEntry數組結構組成。Segment是一種可重入鎖ReentrantLock,在ConcurrentHashMap里扮演鎖的角色,HashEntry則用于存儲鍵值對數據。
一個ConcurrentHashMap里包含一個Segment數組,Segment的結構和HashMap類似,是一種數組和鏈表結構,
一個Segment里包含一個HashEntry數組,每個HashEntry是一個鏈表結構的元素,
每個Segment守護者一個HashEntry數組里的元素,當對HashEntry數組的數據進行修改時,必須首先獲得它對應的Segment鎖。如下圖所示:
以上就是關于java多線程同步集合是什么以及并發集合是什么的主要內容了。可以看出內容還是非常詳實的。如果你對java知識感興趣,想要了解更多java常見問題,敬請關注奇Q工具網。
推薦閱讀:
總結
以上是生活随笔為你收集整理的java 什么是线程同步,java多线程同步集合是什么?并发集合是什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【市场调研与分析】Intel发力移动安全
- 下一篇: 首页列表显示全部问答,完成问答详情页布局