JUC包 BlockingQueue的使用樣例

2021-10-24 22:32:09 字數 1090 閱讀 5004

系統中有業務需要實現佇列,引入中介軟體又沒有太大必要,因此直接使用jdk自帶的類,之前也未使用過,因此將使用的類記錄下,以供後邊當工具類使用。在新增的concurrent包中,blockingqueue(就是個佇列而已)很好的解決了多執行緒中資料的安全問題。

@component

@slf4j

public

class

flowqueue

implements

runnable

//請求加入佇列的方法

public

void

submitrequest

(flowrequest flowrequest)

catch

(interruptedexception e)

}//佇列執行的方法

@override

public

void

run()}

catch

(interruptedexception e)

}//從佇列中移除某請求

public

void

removerequest

(flowrequest flowrequest)

//專案啟動時就啟動該執行緒進行監控

@postconstruct

public

void

init()

}

@component

@slf4j

public

class

flowhandler

implements

consumer

@override

public

void

accept

(flowrequest flowrequest)

else

}}

此處只是使用了linkedblockingqueue,此外家族中還有一些其他的成員,有需要時可以再研究下,網上參考的

java 併發工具包 BlockingQueue

blockingqueue 是乙個介面,字義上理解表示為乙個阻塞佇列 1 生產者入隊 2 消費者出隊 blockingqueue 具有 4 組不同的方法用於插入 移除以及對佇列中的元素進行檢查。如果請求的操作不能得到立即執行的話,每個方法的表現也不同。這些方法如下 拋異常 特定值 阻塞 超時 四組不...

併發工具包 阻塞佇列BlockingQueue

阻塞佇列,顧名思義 如果佇列滿了,那麼會進入阻塞狀態,當有消費者從佇列中取出資料後,再解除阻塞狀態。如果隊列為空,從佇列中取資料就會進入阻塞狀態。直至佇列中有資料為止。blockingqueue是介面,目前已知的實現類如下 arrayblockingqueue 底層底層通過陣列來儲存佇列中的元素,所...

Java並發包分析 BlockingQueue

arrayblockingqueue顧名思義是一種陣列形式的阻塞佇列,其自然就有陣列的特點,即佇列的長度不可改變,只有初始化的時候指定。下面,我們看一下例子。public class arrayblock public blockingqueuegetblockingqueue 建立乙個大小為3的a...