java 併發佇列 前言 一

2021-09-03 02:03:40 字數 649 閱讀 5330

jdk為我們提供了一系列多執行緒安全的佇列. 按實現方式的不同可以分為阻塞佇列和非阻塞佇列.

先來看一組類圖:

阻塞佇列:

非阻塞佇列:

從上面的類圖可以看出,阻塞與非阻塞就在於是否實現了blockingqueue這個介面.這個是乙個阻塞佇列介面.

blockingqueue增加了2個阻塞方法:

以上只是介面在定義的時候設定的一種約束,具體實現還得看具體的實現類.

注意:上面說的阻塞佇列,只有呼叫了阻塞介面中的方法take獲取元素或put壓入元素時才能起到阻塞的效果,如果使用add或offer壓入佇列,peek或poll彈出佇列是起不到阻塞佇列的效果的.當然有界阻塞佇列是個例外,因為當達到有界佇列長度時也會阻塞.

剛開始學佇列的時候,老是被乙個無界有界,阻塞,非阻塞給搞的頭暈. 原來

java高併發程式設計學習筆記一前言

一 前言 1 為什麼需要並行?業務需求 業務上需要乙個邏輯單元,多個執行緒並行執行,例如jvm虛擬機器 gc執行緒 main執行緒 業務執行緒等 效能 本課程主要 原因,多執行緒效能更好,是相對的 在多核cpu上確實效能很好,服務端程式設計提高效能 並行 比序列 複雜很多 linus torvali...

Java併發佇列原理

面試準備,無法保證理解正確性,慎,歡迎糾正 併發佇列與普通佇列的區別的確就在於併發二字,而併發的的基礎就是執行緒安全,如何實現執行緒安全是我們最重要的需要理解的部分.執行緒安全的保證無非就是可見性和原子性 有序性一般不說 接下來的各種佇列主要就這兩點的實現來說.非阻塞佇列即不使用鎖的佇列,主要使用c...

Java併發程式設計一

不要用run 來開啟執行緒,它只會在當前執行緒中,序列執行run 方法中的 建立執行緒時,推薦傳入runnable介面的例項,因為預設的thread.run 就是直接呼叫內部的runnable介面,這樣避免了過載thread.run 因此使用runnable介面來告訴執行緒該做什麼更為合理。publ...