可以簡單地理解為通過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...