常用的併發集合

2021-09-28 11:51:03 字數 1155 閱讀 7342

併發list

vector和copyonwritearraylist是兩個執行緒安全的list,vector讀寫操作都用了同步,相對來說更適用於寫多讀少的場合,copyonwritearraylist在寫的時候會複製乙個副本,對副本寫,寫完用副本替換原值,讀的時候不需要同步,適用於寫少讀多的場合。

併發set

copyonwritearrayset基於copyonwritearraylist來實現的,只是在不允許存在重複的物件這個特性上遍歷處理了一下。

併發map

concurrenthashmap是專用於高併發的map實現,內部實現進行了鎖分離,get操作是無鎖的。

併發的queue

在併發佇列上jdk提供了兩套實現,乙個是以concurrentlinkedqueue為代表的高效能佇列,乙個是以blockingqueue介面為代表的阻塞佇列。concurrentlinkedqueue適用於高併發場景下的佇列,通過無鎖的方式實現,通常concurrentlinkedqueue的效能要優於blockingqueue。blockingqueue的典型應用場景是生產者-消費者模式中,如果生產快於消費,生產佇列裝滿時會阻塞,等待消費。

併發的dueue

queue是一種雙端佇列,它允許在佇列的頭部和尾部進行出隊和入隊的操作。dueue實現類有非執行緒安全的linkedlist、arraydueue和執行緒安全的linkedblockingdueue。linkedblockingdueue沒有進行讀寫鎖的分離,因此同一時間只能有乙個執行緒對其操作,因此在高併發應用中,它的效能要遠遠低於linkedblockingqueue,更低於concurrentlinkedqueue。

併發鎖重入鎖reentrantlock

reentrantlock是一種互斥鎖的實現,就是一次最多只能乙個執行緒拿到鎖;

讀寫鎖readwritelock

讀寫鎖有讀取和寫入兩種鎖,讀取鎖允許多個讀取的執行緒同時持有,而寫入鎖只能有乙個執行緒持有。

條件condition

呼叫condition物件的相關方法,可以方便的掛起和喚醒執行緒。

併發框架和集合

countdownlatch是乙個非常實用的多執行緒控制工具類。下面寫了乙個小例子 public class countdownlatchdemo catch interruptedexception e countdownlatch.countdown start countdownlatch.a...

併發測試集合點測試併發

併發測試集合點 定時器下的synchronizing timer number of simulated users to group by 集合多少人後再執行請求 timeout in milliseconds 指定人數 多少秒沒集合到算超時 設定延遲時間以毫秒為單位 注意 如果設定timeout...

java併發集合的優缺點

執行緒池 executorservice exec executors.newfixedthreadpool 100 優點 1 任務分配簡單,任務少的情況下執行效率高 2 執行緒不需要控制,操作簡單 缺點 1 當每個任務執行時間很長的時候,占用的記憶體和cpu較多.2 執行緒不需要控制,操作簡單 時...