阻塞队列是Java线程新特征中的内容Java定义了阻塞队列的接口ncurrentBlockingQueue阻塞队列的概念是一个指定长度的队列如果队列满了添加新元素的操作会被阻塞等待直到有空位为止同样当队列为空时候请求队列元素的操作同样会阻塞等待直到有可用元素为止
有了这样的功能就为多线程的排队等候的模型实现开辟了便捷通道非常有用
ncurrentBlockingQueue继承了javautilQueue接口可以参看API文档
下面给出一个简单应用的例子
import ncurrentBlockingQueue;
import ncurrentArrayBlockingQueue;
/**
* Java线程新特征阻塞队列
*
* @author leizhimin ::
*/
public class Test {
public static void main(String[] args) throws InterruptedException {
BlockingQueue bqueue = new ArrayBlockingQueue();
for (int i = ; i < ; i++) {
//将指定元素添加到此队列中如果没有可用空间将一直等待(如果有必要)
bqueueput(i);
Systemoutprintln(向阻塞队列中添加了元素: + i);
}
Systemoutprintln(程序到此运行结束即将退出);
}
}
输出结果
向阻塞队列中添加了元素:
向阻塞队列中添加了元素:
向阻塞队列中添加了元素:
向阻塞队列中添加了元素:
向阻塞队列中添加了元素:
向阻塞队列中添加了元素:
向阻塞队列中添加了元素:
向阻塞队列中添加了元素:
向阻塞队列中添加了元素:
向阻塞队列中添加了元素:
向阻塞队列中添加了元素:
向阻塞队列中添加了元素:
向阻塞队列中添加了元素:
向阻塞队列中添加了元素:
向阻塞队列中添加了元素:
向阻塞队列中添加了元素:
向阻塞队列中添加了元素:
向阻塞队列中添加了元素:
向阻塞队列中添加了元素:
向阻塞队列中添加了元素:
可以看出输出到元素时候就一直处于等待状态因为队列满了程序阻塞了
这里没有用多线程来演示没有这个必要
另外阻塞队列还有更多实现类用来满足各种复杂的需求ArrayBlockingQueue DelayQueueLinkedBlockingQueue PriorityBlockingQueue SynchronousQueue 具体的API差别也很小
本文出自 熔 巖 博客请务必保留此出处