LinkedBlockingQueue阻塞队列详解
生活随笔
收集整理的這篇文章主要介紹了
LinkedBlockingQueue阻塞队列详解
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
主要api
java.util.concurrent包下的新類。LinkedBlockingQueue就是其中之一,是一個(gè)阻塞的線程安全的隊(duì)列,底層采用鏈表實(shí)現(xiàn)。
LinkedBlockingQueue構(gòu)造的時(shí)候若沒有指定大小,則默認(rèn)大小為Integer.MAX_VALUE,當(dāng)然也可以在構(gòu)造函數(shù)的參數(shù)中指定大小。LinkedBlockingQueue不接受null。
添加元素的方法有三個(gè):add,put,offer,且這三個(gè)元素都是向隊(duì)列尾部添加元素的意思。
區(qū)別:
add方法在添加元素的時(shí)候,若超出了度列的長度會(huì)直接拋出異常:
put方法,若向隊(duì)尾添加元素的時(shí)候發(fā)現(xiàn)隊(duì)列已經(jīng)滿了會(huì)發(fā)生阻塞一直等待空間,以加入元素。
offer方法在添加元素時(shí),如果發(fā)現(xiàn)隊(duì)列已滿無法添加的話,會(huì)直接返回false。
從隊(duì)列中取出并移除頭元素的方法有:poll,remove,take。
poll: 若隊(duì)列為空,返回null。
remove:若隊(duì)列為空,拋出NoSuchElementException異常。
take:若隊(duì)列為空,發(fā)生阻塞,等待有元素。
總結(jié)
以上是生活随笔為你收集整理的LinkedBlockingQueue阻塞队列详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux内存管理之mmap详解 【转】
- 下一篇: 河北省第四建筑工程有限公司第九分公司有伊