併發容器 總綱

2022-05-29 23:45:26 字數 726 閱讀 8725

同步類容器都是執行緒安全的

同步類容器都是執行緒安全的(這裡的執行緒安全是獨立的操作執行緒安全),但是在某些情況下可能需要加鎖來保證復合操作。

復合操作,如:迭代(反覆訪問元素,遍歷完容器中所有的元素)、跳轉(根據指定的順序找到當前元素的下乙個元素)、以及條件運算。

這些復合操作在多執行緒併發修改容器時,可能會表現出意外的行為,最經典的就是

concurrentmodificationexception,原因是當容器迭代的過程中,被併發的修改了內容,這是早期迭代器設計的時候並沒有考慮到併發修改的問題。

同步類容器

古老的:vector、hashtable

這些容器的同步功能其實都是jdk的collection.synchronized***等方法去建立實現的。其底層機制無非就是傳統的synchronized關鍵字對每個公用方法進行同步,使得每次只能有乙個執行緒訪問容器的狀態,這很明顯不滿足如今網際網路時代高併發的需求,在保證執行緒安全的同時,也必須保證有足夠好的效能。

同步類容器的狀態都是序列化的,他們雖然實現了執行緒安全,但是嚴重降低了併發性,在多執行緒環境下,嚴重降低了應用程式的吞吐量。

專題總綱目錄 Linux總綱

專題總綱說明 本系列文章雖說是linux的知識體系專題,同時也是學習linux系統 尤其是嵌入式系統 系統的乙個思路,尤其是當我們對linux系統一點都不了解的時候,但前提是要有 一定的linux系統基礎和c c 基礎,常用的資料結構和演算法,作業系統知識,網路知識。目錄 1 linux環境 2 l...

併發基礎 11 併發 容器

要實現乙個執行緒安全的佇列有兩個方式 一種是使用阻塞演算法,另一種是使用非阻塞演算法。阻塞演算法 使用阻塞演算法的佇列可以用乙個鎖 入隊和出隊同一把鎖 或兩把鎖 入隊和出隊用不同的鎖 來實現。非阻塞的實現方式則可以使用迴圈cas的方式來實現。concurrentlinkedqueue非阻塞執行緒安全...

併發程式設計9 併發容器

解決併發情況下的容器執行緒安全問題 譬如 vector,hashtable,都是給予同步鎖實現的 concurrent包下的類,大部分都是使用系統底層的實現,類似於native public class test09 latch.countdown for thread t arr try catc...