可以使用Java中Object类的wait(),notify(),notifyAll()等方法来实现....下面的代码是一个简易版本的实现,仅仅实现了阻塞方法,对于队列常规的添加和移除方法没有实现:
import mian.AbstractMain;
import java.util.LinkedList;...,同时启动了一个消费者线程,无限的从队列中读取.可以预期的是,在程序刚开始运行的时候,读写都会运行,而当生产者到1000之后停止,消费者会阻塞....标准输出太多了不贴了,但是通过arthas可以看到当前的线程状态,可以看到消费者是出于wait状态的.
当然我们自己实现的这个考虑肯定不是很周全,那么就来看一下Java对阻塞队列的一些实现....,当队列满时,会尝试知道超时时间结束才返回false.