浅谈java阻塞队列实现原理
来源:互联网 发布:sysgettempdir php 编辑:程序博客网 时间:2024/05/22 06:26
阻塞队列它支持 put 和 take 方法。如果试图在空的缓冲区上执行 take 操作,则在某一个项变得可用之前,线程将一直阻塞;如果试图在满的缓冲区上执行 put 操作,则在有空间变得可用之前,线程将一直阻塞。可以使用两个 Condition 实例来做到这一点。
class BoundedBuffer {阻塞队列 满了不能放,空了不能取
final Lock lock = new ReentrantLock();
final Condition notFull = lock.newCondition();
final Condition notEmpty = lock.newCondition();
final Object[] items = new Object[100];
int putptr, takeptr, count;
public void put(Object x) throws InterruptedException {
lock.lock();
try {
while (count == items.length)
notFull.await();
items[putptr] = x;
if (++putptr == items.length) putptr = 0;
++count;
notEmpty.signal();
} finally {
lock.unlock();
}
}
public Object take() throws InterruptedException {
lock.lock();
try {
while (count == 0)
notEmpty.await();
Object x = items[takeptr];
if (++takeptr == items.length) takeptr = 0;
--count;
notFull.signal();
return x;
} finally {
lock.unlock();
}
}
}
0 0
- 浅谈java阻塞队列实现原理
- Java 阻塞队列实现原理分析
- Java 阻塞队列实现
- Java并发编程-阻塞队列(BlockingQueue)的实现原理
- java并发编程学习: 阻塞队列 使用 及 实现原理
- Java阻塞队列-BlockingQueue介绍及实现原理
- Java阻塞队列ArrayBlockingQueue和LinkedBlockingQueue实现原理分析
- Java并发编程-阻塞队列(BlockingQueue)的实现原理
- Java并发编程-阻塞队列(BlockingQueue)的实现原理
- Java阻塞队列ArrayBlockingQueue和LinkedBlockingQueue实现原理分析
- java 之 阻塞队列实现
- Java阻塞队列的实现
- Java阻塞队列的实现
- Java阻塞队列的实现
- Java阻塞队列的实现
- Java阻塞队列的实现
- Java阻塞队列的实现
- java 阻塞队列自定义实现
- Linux中的set和env命令
- 那些不容错过的Xcode插件
- retinex整理(其中个人理解部分不保证准确,请多指教)
- 白板与编程面试:为什么不在电脑上编程更有帮助
- 1624
- 浅谈java阻塞队列实现原理
- POJ-1002 487-3279 模拟问题
- 二分图基本概念
- SDUTOJ 2120数据结构实验之链表五:单链表的拆分
- Mysql插入乱码问题
- C语言和php语言现在哪个更给力吃香
- Java的三大特性
- 一个 电脑原始人 的独白
- Myeclipse快捷键