5 同步類容器和併發類容器

2021-09-03 09:46:01 字數 957 閱讀 3850

1.同步類容器都是執行緒安全的,但在某些場景下可能需要加鎖來保護復合操作。復合類操作如:迭代(反覆訪問元素,遍歷完容器中所有的元素)、跳轉(根據指定的順序找到當前元素的下乙個元素)、以及條件運算。這些復合操作在多執行緒併發地修改容器時,可能會表現出意外的行為,最經典的便是 concurrentmodificationexception ,原因是當容器迭代的過程中,被併發的修改了內容,這是由於早期迭代器設計的時候井沒有考慮併發修改的問題。

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

2併發類容器

2. 2 copy-on -write容器

多個執行緒讀是沒有問題的,不需要加任何鎖。 當執行緒對這個進行寫的時候,會先拷貝乙份,修改完了之後 把之前的指標指向修改之後的。多個寫,底層也是加了鎖。 最好在讀多寫少的場景下應用。

同步類容器和併發類容器

同步類容器都是執行緒安全的,但是某些場景下可能需要加鎖來保護復合操作。復合類操作如 迭代 反覆訪問元素,遍歷完容器中所有的元素 跳轉 根據指定的順序找到當前元素的下乙個元素 以及條件運算。這些復合操作在多執行緒併發地修改容器時,可能會表現出意外的行為,最經典的便是concurrentmodifica...

同步類容器和併發類容器

同步類容器都是執行緒安全的,但在某些場景下可能需要加鎖來保護復合操作。復合類操作。如 迭代 反覆訪問元素,遍歷完容器中所有的元素 跳轉 根據指定的順序找到當前元素的下乙個元素 以及條件運算。這些復合操作在多執行緒併發地修改容器時,可能會表現出意外的行為,最經典的便是concurrentmodific...

同步類容器和併發類容器

同步類容器都是執行緒安全的,同步容器類包括 vector 和 hashtable,二者都是早期 jdk 的一部分,此外還包括在 jdk1.2 當中新增的一些功能相似的類,這些同步的封裝類是由 collections.synchronized 等工廠方法建立的。但在某些場景下可能需要加鎖來保護復合操作...