Java5实现阻塞队列
来源:互联网 发布:判断矩阵的一致性检验 编辑:程序博客网 时间:2024/06/06 10:59
BlockingQueue
当生产者线程试图向BlockingQueue中放入元素时,如果该队列已满,则该线程被阻塞,对应put方法;
当消费者线程试图从BlockingQueue中取出元素时,如果该队列已空,则该线程被阻塞,对应take方法。
import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;class BlockingQueue{ //显示定义一个可重入锁 final Lock lock = new ReentrantLock(); //获得指定lock对象的condition final Condition notFull = lock.newCondition(); final Condition notEmpty = lock.newCondition(); //定义一个Object数组 final Object[] items = new Object[100]; //定义一些标识变量 int putptr, takeptr, count; //向队列中放元素 public void put(Object o) throws InterruptedException { lock.lock();//加锁 try { while(count == items.length)//若队列满,则阻塞非满线程 { notFull.await(); } items[putptr++] = o;//否则将元素加入数组中 if(putptr == items.length)//若队列满,则将put标识清0 { putptr = 0; } count++;//队列中元素的个数自增 notEmpty.signal();//唤醒非空线程 } finally { lock.unlock();//释放锁 } } //从队列中取元素 public Object take() throws InterruptedException { lock.lock();//加锁 try { while(count == 0)//若队列空,则阻塞非空线程 { notEmpty.await(); } Object o = items[takeptr++];//将数组中的元素存入Object变量 if(takeptr == items.length)//若队列变空,则将take标识清0 { takeptr = 0; } count--;//数组元素个数自减 notFull.signal();//唤醒非满线程 return o;//返回需要取出的元素 }finally { lock.unlock();//释放锁 } } }
0 0
- Java5实现阻塞队列
- Java5实现阻塞队列
- java5中的阻塞队列BlockingQueue和非阻塞队列ConcurrentLinkedQueue
- Java5 多线程(八)-- ArrayBlockingQueue阻塞队列
- 17-java5阻塞队列的应用
- 18-java5阻塞队列实现线程间通信-实现线程间通信方式(3)
- 【张孝祥并发课程笔记】14:java5阻塞队列的应用
- 实现阻塞队列
- C++阻塞队列实现
- Java 阻塞队列实现
- 自己实现阻塞队列
- (10)java5条件阻塞Condition的应用<包含阻塞队列知识>
- (10)java5条件阻塞Condition的应用<包含阻塞队列知识>
- 黑马程序员——Java5中的线程并发库(二)--Semaphore实现信号灯、其他同步函数、可阻塞的队列、同步集合
- java 之 阻塞队列实现
- Java阻塞队列的实现
- Java阻塞队列的实现
- Java阻塞队列的实现
- Spring之IOC学习
- AtomicInteger 中 incrementAndGet与getAndIncrement 两个方法的区别
- 上机题目(初级)- Java网络操作-Socket实现客户端和服务器端通信二(Java)
- autoLayout cell中添加UILabel 多行显示问题
- python cookie
- Java5实现阻塞队列
- 简单工厂模式
- LMS学习管理系统综述
- Android编码规范
- 计算共有多少个单词,并输出最长和最短的单词
- SQL四个排名函数的区别
- 自定义UITableViewCell上的delete按钮
- 2种方法解决mysql主从不同步
- linux rs sz 安装