008 J U C 之併發容器類 Map

2021-10-21 17:09:35 字數 2734 閱讀 2006

1. 演繹推導法

2. 歸納總結法

3. 模擬法1. 涉及內容

資料要儲存

陣列的插入和查詢

雜湊衝突,陣列位置已存在值。

合理控制陣列和鍊錶的長度。

1. copyonwritearraylist 優缺點

缺點:

2. copyonwritearraylist 原理分析

實現原理

特點hashset

基於 hashmap 實現

非執行緒安全

copyonwritearrayset

基於 copyonwritearraylist

執行緒安全

concurrentskiplistset

基於 concurrentskiplistmap 實現

執行緒安全,有序,查詢快

2. 常用佇列

3. synchronousqueue(同步佇列)

take會阻塞,直到取到元素

public static void test01() throws interruptedexception  catch (interruptedexception e) 

}).start();

system.out.println("begin to take...");

system.out.println(syncqueue.take());

system.out.println("take done...");

}

put 時被阻塞,直到被 get

public static void test02() throws interruptedexception  catch (interruptedexception e) 

}).start();

system.out.println("begin to put...");

syncqueue.put("put_element");

system.out.println("put done...");

}

若沒有 take 方法阻塞等待,offer 的元素可能會丟失

public static void test03()
poll 取不到元素,就返回 null,如果正好有 put 被阻塞,可以取到

public static void test04() throws interruptedexception  catch (interruptedexception e) 

}).start();

thread.sleep(1000);

object obj = syncqueue.poll();

system.out.println(obj);

}

peek 永遠只能取到 null,不能讓 take 結束阻塞

public static void test05() throws interruptedexception  catch (interruptedexception e) 

}).start();

thread.sleep(200l);

object obj = syncqueue.peek();

system.out.println(obj);

}

4. priorityblockingqueue(優先順序佇列)

簡單使用

public static void main(string args)  catch (interruptedexception e) }}

自定義比較規則

public class demo4_priorityblockingqueue 

}}class student

}

JUC併發工具類

countdownlatch允許乙個或多個執行緒等待其他執行緒完成操作 具體分析 countdownlatch的建構函式接收乙個int型別的引數作為計數器,而int具體數值則代表要等待多少個執行緒點的完成!例如,程式中初始設定為2,則表示等待的數量為2.然後就是,countdownlatch的cou...

同步類容器和併發類容器

同步類容器都是執行緒安全的,但是某些場景下可能需要加鎖來保護復合操作。復合類操作如 迭代 反覆訪問元素,遍歷完容器中所有的元素 跳轉 根據指定的順序找到當前元素的下乙個元素 以及條件運算。這些復合操作在多執行緒併發地修改容器時,可能會表現出意外的行為,最經典的便是concurrentmodifica...

同步類容器和併發類容器

同步類容器都是執行緒安全的,但在某些場景下可能需要加鎖來保護復合操作。復合類操作。如 迭代 反覆訪問元素,遍歷完容器中所有的元素 跳轉 根據指定的順序找到當前元素的下乙個元素 以及條件運算。這些復合操作在多執行緒併發地修改容器時,可能會表現出意外的行為,最經典的便是concurrentmodific...