線程安全隊列BlockingQueue
用法跟普通隊列沒有區別,只是加入了多線程支持。
這里主要說說add和put,以及poll和take的區別:
add和put都是用來忘隊列里面塞東西的,而poll和take都是用來取隊列的頭元素的。
下面看下聲明:
經過實際測試,結果如下:
總結:add和poll是非阻塞的,put和take是阻塞的。
add會返回插入隊列的結果,成功返回true,失敗返回false, put不會返回結果,因為BlockingQueue的長度是在創建這個隊列的時候就設定好了的,當隊列已經滿了的時候,
add會跑出異常,而put則會阻塞直到插入成功。
poll和take的區別類似, 當隊列為空時,take會阻塞至取到元素為止,而poll會返回null值。