JAVA 阻塞队列
来源:互联网 发布:小米无线鼠标mac 编辑:程序博客网 时间:2024/06/05 22:40
阻塞队列,顾名思义,当队列为空取元素或者队列满了放元素时对线程进行阻塞
阻塞队列有以下几种:
- ArrayBlockingQueue 基于数组实现,定义时需指定大小
- LinkedBlockingQueue 基于链表实现
- PriorityBlockingQueue 基于堆实现
- DelayQueue 延时阻塞队列
用ArrayBlockingQueue实现生产者消费者模型
import java.util.concurrent.ArrayBlockingQueue;public class JavaBlockQueue { public ArrayBlockingQueue<Integer> arrayBlockingQueue = new ArrayBlockingQueue<Integer>(5); public int count = 0; public static void main(String[] args) { JavaBlockQueue javaBlockQueue = new JavaBlockQueue(); new Thread(javaBlockQueue.new Consumer()).start(); new Thread(javaBlockQueue.new Producer()).start(); } class Consumer implements Runnable { @Override public void run() { try { while (true) { System.out.println("取出" + arrayBlockingQueue.take()); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class Producer implements Runnable { @Override public void run() { try { while (true) { arrayBlockingQueue.put(++count); System.out.println("存入 " + count); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}
测试结果
存入 25449
存入 25450
存入 25451
存入 25452
存入 25453
取出25449
取出25450
取出25451
取出25452
取出25453
0 0
- java阻塞队列以及非阻塞队列
- java阻塞队列与非阻塞队列
- java 阻塞队列
- JAVA 阻塞队列 ArrayBlockingQueue
- Java中的阻塞队列
- java阻塞队列
- Java 阻塞队列 BlockingQueue
- Java的阻塞队列
- Java中的阻塞队列
- java阻塞队列
- java 阻塞队列BlockingQueue
- java多线程-阻塞队列
- java 阻塞队列
- JAVA 阻塞队列
- Java多线程 -- 阻塞队列
- Java阻塞队列
- Java中的阻塞队列
- java 阻塞队列
- Defining a controller with @Controller
- 【DOM操作】DOM操作HTML中的Select标签
- Spring Data MongoDB 四:基本文档修改(update)(一)
- Errors occurred during the build. Errors running builder 'JavaScript Validator' on project
- 【转】2012年6月25 – 某欧美上市企业PHP工程师最新面试题
- JAVA 阻塞队列
- java 去掉html标签
- Select和epoll的区别
- Round Robin 概念理解
- hibernate延迟加载(get和load的区别)
- Windows下Redis的安装使用
- ADT SVN 插件安装教程
- jvm一点内存的知识(持续积累中)
- 使用Google Analytics跟踪捕获JavaScript,AngularJS,jQuery的在线错误和异常