系統中有業務需要實現佇列,引入中介軟體又沒有太大必要,因此直接使用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...