阻塞队列的操作方法
在阻塞隊(duì)列中,提供了四種處理方式
1. 插入操作
add(e)?:添加元素到隊(duì)列中,如果隊(duì)列滿了,繼續(xù)插入元素會報(bào)錯(cuò),IllegalStateException。
offer(e) :?添加元素到隊(duì)列,同時(shí)會返回元素是否插入成功的狀態(tài),如果成功則返回true
put(e)?:當(dāng)阻塞隊(duì)列滿了以后,生產(chǎn)者繼續(xù)通過put添加元素,隊(duì)列會一直阻塞生產(chǎn)者線程,知道隊(duì)列可用
offer(e,time,unit)?:當(dāng)阻塞隊(duì)列滿了以后繼續(xù)添加元素,生產(chǎn)者線程會被阻塞指定時(shí)間,如果超時(shí),則線程直接退出
2. 移除操作
remove():當(dāng)隊(duì)列為空時(shí),調(diào)用remove會返回false,如果元素移除成功,則返回true
poll():?當(dāng)隊(duì)列中存在元素,則從隊(duì)列中取出一個(gè)元素,如果隊(duì)列為空,則直接返回null
take():基于阻塞的方式獲取隊(duì)列中的元素,如果隊(duì)列為空,則take方法會一直阻塞,直到隊(duì)列中有新的數(shù)據(jù)可以消費(fèi)
poll(time,unit):帶超時(shí)機(jī)制的獲取數(shù)據(jù),如果隊(duì)列為空,則會等待指定的時(shí)間再去獲取元素返回
?
總結(jié)
- 上一篇: J.U.C 提供的阻塞队列
- 下一篇: ArrayBlockingQueue原理