1、以ArrayBlockingQueue为例

将元素放入队里

 

多线程之阻塞式队列

2、下面看下offer中的代码

多线程之阻塞式队列

多线程之阻塞式队列

如果有阻塞节点就去唤醒

多线程之阻塞式队列

多线程之阻塞式队列

多线程之阻塞式队列

Node节点会记录对应的线程,所以阻塞式队列中的Condition可以唤醒阻塞队列断点线程

2、获取数据方法

多线程之阻塞式队列

 

一般要当前线程阻塞时要用take

多线程之阻塞式队列

如果队列为空则阻塞队列

多线程之阻塞式队列

多线程之阻塞式队列

多线程之阻塞式队列

将node节点记录阻塞的线程,以便加入队列时唤醒线程

 

相关文章: