Java線程安全隊列BlockingQueue


線程安全隊列BlockingQueue

用法跟普通隊列沒有區別,只是加入了多線程支持。

這里主要說說add和put,以及poll和take的區別:

add和put都是用來忘隊列里面塞東西的,而poll和take都是用來取隊列的頭元素的。

下面看下聲明:

add: boolean java. util. concurrent. BlockingQueue.add( Object e);
put: void java. util. concurrent. BlockingQueue.put(Object e) throws InterruptedException;
 
poll:  Object java. util. Queue.poll();
take:  Object java. util. concurrent. BlockingQueue.take() throws InterruptedException;
 
經過實際測試,結果如下:
總結:add和poll是非阻塞的,put和take是阻塞的。
add會返回插入隊列的結果,成功返回true,失敗返回false, put不會返回結果,因為BlockingQueue的長度是在創建這個隊列的時候就設定好了的,當隊列已經滿了的時候,
add會跑出異常,而put則會阻塞直到插入成功。
 
poll和take的區別類似, 當隊列為空時,take會阻塞至取到元素為止,而poll會返回null值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM