同步容器和併發簡介

2021-09-26 03:32:42 字數 778 閱讀 8247

可以簡單地理解為通過synchronized來實現同步的容器,如果有多個執行緒呼叫同步容器的方法,它們將會序列執行。

比如vector,hashtable,以及collections.synchronizedset,synchronizedlist等方法返回的容器。

效能問題:由於被 synchronized 修飾的方法,每次只允許乙個執行緒執行,其他試圖訪問這個方法的執行緒只能等待。

顯然,這種方式比沒有使用 synchronized 的容器效能要差。

安全問題:同步容器真的一定安全嗎?答案是:未必。同步容器未必真的安全。在做復合操作時,仍然需要加鎖來保護。

1、copyonwrite容器:

copyonwritearraylist:執行緒安全的 arraylist

copyonwritearrayset:執行緒安全的 set,它內部包含了乙個 copyonwritearraylist,

因此本質上是由 copyonwritearraylist 實現的。

2、cocurrentmap的實現類:

concurrenthashmap:執行緒安全的 hashmap。採用分段鎖實現高效併發。

concurrentskiplistmap:執行緒安全的有序 map。使用跳表實現高效併發。

3、其他:

concurrentskiplistset:相當於執行緒安全的 treeset。它是有序的 set。它由 concurrentskiplistmap 實現。

同步容器和併發容器

同步容器和併發容器 vector 執行緒安全,在方法上加synchronized arraylist collections 工具類 hashtable 執行緒安全,在方法上加synchronized hashmap 併發容器 copyonwritearraylist 當寫的時候,就複製。缺點 1 ...

同步類容器和併發類容器

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

同步類容器和併發類容器

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