jdk中concurrent包下的執行緒安全集合

2021-08-19 07:01:47 字數 1085 閱讀 4260

concurrenthashmap  執行緒安全的map

concurrentskiplistmap執行緒安全且具有排序功能的map

concurrentskiplistset執行緒安全且具有排序功能的set

copyonwritearraylist執行緒安全能夠在遍歷的過程中對list進行操作(包括寫和刪除)

copyonwritearrayset執行緒安全能夠在遍歷的過程中對set進行操作(包括寫和刪除)

而這些類也提供的乙個獨特的入參:concurrencylevel:併發級別。傳入預估有多少個執行緒會同時訪問這個map

除此之外還有一些通用的引數:

size:表示hashmap中存放kv的數量(為鍊錶和樹中的kv的總和)。

capacity:譯為容量。capacity就是指hashmap中桶的數量。預設值為16。每次擴充都是乘以2倍。

loadfactor:譯為裝載因子。裝載因子用來衡量hashmap滿的程度。loadfactor的預設值為0.75f。計算hashmap的實時裝載因子的方法為:size/capacity,而不是占用桶的數量去除以capacity。

threshold:threshold表示當hashmap的size大於threshold時會執行resize操作。 threshold=capacity*loadfactor  這個值是不能設定的  通過capacity和loadfactor自動生成

map中還提供了通用方法之外的額外的方法:

①:putifabsent:

if (!map.containskey(key))

return map.put(key, value);

else

return map.get(key);

②:replace(k key, v oldvalue, v newvalue)

if (map.containskey(key) && map.get(key).equals(oldvalue))

else

return false;

③:replace(k key, v value)

if (map.containskey(key)) else return null;

concurrent包簡介 Condition 類

condition的基本使用如下 condition是個介面,基本的方法就是await 和signal 方法 condition依賴於lock介面,生成乙個condition的基本 是lock.newcondition 呼叫condition的await 和signal 方法,都必須在lock保護之...

Concurrent包詳解及使用場景

concurrent包是jdk1.5所提供的乙個針對高併發進行程式設計的包。遵循先進先出 fifo 的原則。阻塞式佇列本身使用的時候是需要指定界限的。在生產者消費者模型中,生產資料和消費資料的速率不一致,如果生產資料速度快一些,消費 處理 不過來,就會導致資料丟失。這時候我們就可以應用上阻塞佇列來解...

JDK中主要的包介紹

j a.lang 包含一些j a語言的核心類,如string math integer system thread,提供常用功能 j a.net 包含執行與網路相關的操作的類和介面 j a.io 包含能夠提供多種輸入 輸出功能的類 j a.util 包含一些實用工具類,如定義系統特性 介面的集合框架...