使用-ReentrantLock-和-Condition-实现一个阻塞队列
## 前言
从之前的阻塞队列的源码分析中,我们知道,JDK 中的阻塞队列是使用 ReentrantLock 和 Condition 实现了,我们今天来个简易版的。代码如下:
代码
1 | public class BoundedBuffer { |
其实,这并不是我写的,而是 Condition 接口的 JavaDoc 文档中写的。并且文档中说,请不要再次实现这个队列,因为 JDK 内部已经是实现了。原话如下:
(The {@link java.util.concurrent.ArrayBlockingQueue} class provides this functionality, so there is no reason to implement this sample usage class.)
楼主只是觉得这个代码写的挺好的,所以分享一下,其中关键的还是 Condition 和重入锁,重入锁的核心源码我们已经看过了,今天来看看 Condition 的源码。所以我们今天使用了这个代码作为一个入口。
可以看到,Condition 的重要方法就是 await 和 signal,类似 Object 类的 wait 和 notify 方法。
我们后面会详细讲讲这两个方法的实现。
使用-ReentrantLock-和-Condition-实现一个阻塞队列
http://thinkinjava.cn/2018/04/14/2018/2018-04-14-使用-ReentrantLock-和-Condition-实现一个阻塞队列/