在新增的Concurrent包中,BlockingQueue很好的解決了多線程中,如何高效安全“傳輸”數據的問題。通過這些高效並且線程安全的隊列類,為我們快速搭建高質量的多線程程序帶來極大的便利。本文簡要介紹下BlockingQueue接口中幾個方法的作用及區別。
1、add(E e)
在不違反容量限制的情況下,可立即將指定元素插入此隊列,成功返回true,當無可用空間時候,返回IllegalStateException異常。
2、offer(E e)
在不違反容量限制的情況下,可立即將指定元素插入此隊列,成功返回true,當無可用空間時候,返回false。
3、put(E e)
直接在隊列中插入元素,當無可用空間時候,阻塞等待。
4、offer(E e, long time, timeunit unit)
將給定元素在給定的時間內設置到隊列中,如果設置成功返回true, 否則返回false。
5、E take()
獲取並移除隊列頭部的元素,無元素時候阻塞等待。
6、E poll( long time, timeunit unit)
獲取並移除隊列頭部的元素,無元素時候阻塞等待指定時間。