Concurrent併發工具集合簡介

2022-10-10 10:03:09 字數 1092 閱讀 2261

concurrenthashmap:乙個高併發的hashmap

copyonwritearraylist :這是乙個list和arraylist是 一族,在讀多寫少的場合,這個list效能非常好   (當寫入當時候,先對陣列進行了次複製,arrays.copyof(oldarr,len+1),然後setarray(newarr))

concurrentlinkedqueue:高效的併發佇列(高併發中效能最好的佇列),可以看作乙個執行緒安全的linkedlist

blockingqueue:介面,jdk內部通過鍊錶、陣列等方式實現了這個藉口,表示阻塞佇列,非常適用於作為資料共享的通道。

linkedblockingqueue適合做無界或者邊界非常大的佇列(因為內部可以動態增加)

arrayblockingqueue更適合做有界佇列,因為佇列中可容納的最大元素需要在佇列建立的時候指定(畢竟陣列的動態擴充套件不方便)

poll() 得到乙個頭部元素,如果空直接返回null,  take()) 得到乙個頭部元素,如果空,會等待

offer()插入乙個元素,如果佇列滿了,返回false,put()插入乙個元素,如果佇列滿了,就等待      

public void put(e e) throws interruptedexception  finally 

}

concurrentskiplistmap:跳表的實現,這是乙個map,使用跳表的資料結構進行快速查詢

1、跳表的乙個特點是隨機演算法,跳表的本質是同時維護多個鍊錶,並且鍊錶分層(空間換時間)

2、如上圖,第二個特點,底層是順序的,我們搜尋55只需要2次查詢即可。這個結構中,查詢元素46仍然是最耗時的,需要查詢5次。即首先在l3層查詢2次,然後在l2層查詢2次,最後在l1層查詢1次,共5次。

跳表實現map和使用雜湊方法實現map的另乙個不同之處就是,雜湊不會儲存元素的順序,而跳表內的元素是排序的。

併發工具概覽

併發工具總的可以分為三類 為了併發安全的 為了管理執行緒提高效率的 執行緒池相關 獲取子執行緒執行結果的callable future futuretask等 執行緒之間配合的 countdownlatch semaphore condition phaser exchanger cyclibarr...

併發工具 CyclicBarrier

本部落格系列是學習併發程式設計過程中的記錄總結。由於文章比較多,寫的時間也比較散,所以我整理了個目錄貼 傳送門 方便查閱。併發程式設計系列部落格傳送門 cyclicbarrier也是jdk並發包中提供的乙個輔助併發工具類。cyclicbarrier的作用是讓一組執行緒互相等待,直到這組執行緒中所有的...

併發工具類

常用的閉鎖工具類 countdownlatch cyclicbarrier futuretask。閉鎖應用場景 1.有a b c三個執行緒一起執行,可是a執行緒需要等待b c執行緒任務執行完畢才繼續往下執行。2.乙個執行緒的某步計算依賴於其它執行緒的執行結果。用生活例子舉例,小明約小張和小李吃飯,小...