生活随笔
收集整理的這篇文章主要介紹了
ArrayBlockingQueue队列
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
ArrayBlockingQueue
也稱為有界隊(duì)列
基于數(shù)組的阻塞隊(duì)列實(shí)現(xiàn)
內(nèi)部,維護(hù)了一個(gè)定長(zhǎng)數(shù)組,便于緩存隊(duì)列中的數(shù)據(jù)對(duì)象
內(nèi)部,沒(méi)有實(shí)現(xiàn)讀寫分離,意味著生產(chǎn)者、消費(fèi)者不能完全并行
長(zhǎng)度需要定義,不指定會(huì)報(bào)錯(cuò)
可以指定先進(jìn)先出,或者先進(jìn)后出
package
com.bjsxt.base.coll013import java
.util.ArrayList
import java
.util.List
import java
.util.concurrent.ArrayBlockingQueue
import java
.util.concurrent.ConcurrentLinkedQueue
import java
.util.concurrent.LinkedBlockingQueue
import java
.util.concurrent.SynchronousQueue
import java
.util.concurrent.TimeUnitimport javax
.swing.text.html.HTMLDocument.Iteratorpublic class UseQueue {public static void main(String[] args) throws Exception {ArrayBlockingQueue<String> array = new ArrayBlockingQueue<String>(
5)array
.put(
"a")array
.put(
"b")array
.add(
"c")array
.add(
"d")array
.add(
"e")System
.out.println(array
.offer(
"a",
3, TimeUnit
.SECONDS))}
}
3秒之內(nèi)
如果,a元素加進(jìn)去了,返回true
如果,a元素沒(méi)有加進(jìn)去,返回false
運(yùn)行
package
com.bjsxt.base.coll013import java
.util.ArrayList
import java
.util.List
import java
.util.concurrent.ArrayBlockingQueue
import java
.util.concurrent.ConcurrentLinkedQueue
import java
.util.concurrent.LinkedBlockingQueue
import java
.util.concurrent.SynchronousQueue
import java
.util.concurrent.TimeUnitimport javax
.swing.text.html.HTMLDocument.Iteratorpublic class UseQueue {public static void main(String[] args) throws Exception {ArrayBlockingQueue<String> array = new ArrayBlockingQueue<String>(
5)array
.put(
"a")array
.put(
"b")array
.add(
"c")array
.add(
"d")array
.add(
"e")array
.add(
"f")System
.out.println(array
.offer(
"a",
3, TimeUnit
.SECONDS))}
}
定義長(zhǎng)度為5
添加6個(gè)元素,直接報(bào)錯(cuò)
運(yùn)行
總結(jié)
以上是生活随笔為你收集整理的ArrayBlockingQueue队列的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。