[b]同步容器[/b]
主要代表有vector和hashtable,以及collections.synchronized***等
鎖的粒度為當前物件整體,迭代器是及時失敗的,即在迭代的過程中發現被修改,就會丟擲concurrentmodificationexception。
[b]併發容器[/b]
主要代表有concurrenthashmap、copyonwritearraylist、concurrentskiplistmap、concurrentskiplistset
鎖的粒度是分散的、細粒度的,即讀和寫是使用不同的鎖,迭代器具有弱一致性,即可以容忍併發修改,不會丟擲concurrentmodificationexception。
[b]阻塞佇列[/b]
主要代表有linkedblockingqueue、arrayblockingqueue、priorityblockingqueue(comparable,comparator)、synchronousqueue。
提供了可阻塞的put和take方法,以及支援定時的offer和poll方法,適用於生產者、消費者模式(執行緒池和工作佇列-executor),同時也是同步容器。
[b]雙端佇列和工作密取[/b]
主要代表有arraydeque和linkedblockingdeque。
如果乙個消費者完成了自己雙端佇列中的全部工作,那麼他就可以從其他消費者的雙端佇列末尾秘密的獲取工作。具有更好的可伸縮性,這是因為工作者執行緒不會在單個共享的任務佇列上發生競爭。在大多數時候,他們都只是訪問自己的雙端佇列,從而極大的減少了競爭。當工作者執行緒需要訪問另乙個佇列時,它會從佇列的尾部而不是頭部獲取工作,因此進一步降低了佇列上的競爭。
STL容器 順序容器 佇列queue和deque
queue單向佇列,先進先出,也就是從尾部插入,頭部取出 操作 queueq 建立乙個int型空佇列q q.empty 判斷佇列是否為空,為空返回true q.push s 將變數s從隊尾入隊 q.pop 將隊頭元素彈出,佇列中不再有該元素 q.front 只返回隊頭元素,只是檢視,佇列中元素依然存...
同步容器 併發容器 阻塞佇列 雙端佇列
一 同步容器 主要代表有vector和hashtable,以及collections.synchronized 等。鎖的粒度為當前物件整體。迭代器是及時失敗的,即在迭代的過程中發現被修改,就會丟擲concurrentmodificationexception。二 併發容器 主要代表有concurre...
C 棧和佇列 stack堆疊容器
棧 stack 在電腦科學中是限定僅在表尾進行插入或刪除操作的線性表。棧是一種資料結構,它按照後進先出的原則儲存資料,先進入的資料被壓入棧底,最後的資料在棧頂,需要讀資料的時候從棧頂開始彈出資料。棧是只能在某一端插入和刪除的特殊線性表。用桶堆積物品,先堆進來的壓在底下,隨後一件一件往上堆。取走時,只...