阻塞队列源码疑惑

来源:9-23 代码演示、源码分析

程序员Fisher

2022-06-15

老师,能帮忙分析一下这块代码,是怎么执行的吗,put方法中的await会阻塞当前线程,此时使用的notFull.await,然后唤醒别的线程,但是我看take方法用的notEmpty.await,他们是图片描述如何协作的呢?

写回答

1回答

悟空

2022-06-15

是这样的,notFull和notEmpty是两个不同的集合,里面放着不同的线程,我理解你的疑问是,都是await,那么是在哪里唤醒的呢?其实在你截图的代码里,有enqueue方法,会唤醒notEmpty,而在取出元素的时候,会唤醒notFull,所以是这样协作的。

0
1
程序员Fisher
收到,理解了感谢老师的回答
2022-06-15
共1条回复

深度解密Java并发工具,精通JUC,成为并发多面手

JUC全方位讲解,构建并发工具类知识体系

1599 学习 · 573 问题

查看课程