java多執行緒之新特徵-阻塞佇列?

Tags: 特徵, 元素, 佇列,

阻塞佇列是Java5執行緒新特徵中的內容,Java定義了阻塞佇列的介面java.util.concurrent.BlockingQueue,阻塞佇列的概念是,一個指定長度的佇列,如果佇列滿了,新增新元素的操作會被阻塞等待,直到有空位為止。同樣,當佇列為空時候,請求佇列元素的操作同樣會阻塞等待,直到有可用元素為止。

有了這樣的功能,就為多執行緒的排隊等候的模型實現開闢了便捷通道,非常有用。

java.util.concurrent.BlockingQueue繼承了java.util.Queue介面,可以參看API文件。

下面給出一個簡單應用的例子:

import java.util.concurrent.BlockingQueue; import java.util.concurrent.ArrayBlockingQueue; /** * Java執行緒:新特徵-阻塞佇列 * * @author leizhimin 2009-11-5 14:59:15 */publicclass Test { publicstaticvoid main(String[] args) throws InterruptedException { BlockingQueue bqueue = new ArrayBlockingQueue(20); for (int i = 0; i < 30; i++) { //將指定元素新增到此佇列中,如果沒有可用空間,將一直等待(如果有必要)。 bqueue.put(i); System.out.println("向阻塞佇列中添加了元素:" + i); } System.out.println("程式到此執行結束,即將退出----"); } }

輸出結果:

向阻塞佇列中添加了元素:0 向阻塞佇列中添加了元素:1 向阻塞佇列中添加了元素:2 向阻塞佇列中添加了元素:3 向阻塞佇列中添加了元素:4 向阻塞佇列中添加了元素:5 向阻塞佇列中添加了元素:6 向阻塞佇列中添加了元素:7 向阻塞佇列中添加了元素:8 向阻塞佇列中添加了元素:9 向阻塞佇列中添加了元素:10 向阻塞佇列中添加了元素:11 向阻塞佇列中添加了元素:12 向阻塞佇列中添加了元素:13 向阻塞佇列中添加了元素:14 向阻塞佇列中添加了元素:15 向阻塞佇列中添加了元素:16 向阻塞佇列中添加了元素:17 向阻塞佇列中添加了元素:18 向阻塞佇列中添加了元素:19

可以看出,輸出到元素19時候,就一直處於等待狀態,因為佇列滿了,程式阻塞了。

這裡沒有用多執行緒來演示,沒有這個必要。

另外,阻塞佇列還有更多實現類,用來滿足各種複雜的需求:ArrayBlockingQueue, DelayQueue,LinkedBlockingQueue, PriorityBlockingQueue, SynchronousQueue,具體的API差別也很小。

特徵, 元素, 佇列,
相關問題答案