管程(Moniter): 并发编程的基本心法( 四 )
-
对于入队操作 , 如果队列已满 , 就需要等待直到队列不满 , 所以这里用了
notFull.await;
。 -
对于出队操作 , 如果队列为空 , 就需要等待直到队列不空 , 所以就用了
notEmpty.await;
。 -
如果入队成功 , 那么队列就不空了 , 就需要通知条件变量:队列不空
notEmpty
对应的等待队列 。 -
如果出队成功 , 那就队列就不满了 , 就需要通知条件变量:队列不满
notFull
对应的等待队列 。在这段示例代码中 , 我们用了 Java 并发包里面的 Lock 和 Condition , 如果你看着吃力 , 也没关系 , 后面我们还会详细介绍 , 这个例子只是先让你明白条件变量及其等待队列是怎么回事 。 需要注意的是:await 和前面我们提到的 wait 语义是一样的;signal 和前面我们提到的 notify 语义是一样的 。 管程通过条件队列通信实现了同步 , 为我们 Java中的并发编程提供了基本支持 。
推荐阅读
- 手机游戏|LOL手游女主播遭遇网暴,停播一周并发文求饶,长得漂亮有错吗?
- 华为|华为“后遗症”并发?谁也没想到,深埋7年“地雷”被英国引爆?
- 并发经验八年架构师:带你轻松解决缓存在高并发场景下的问题
- 2020最新500道Java高岗面试题:数据库+微服务 +SSM+并发编程+..
- 疫情过后,Java开发者如何应对多线程与高并发面试题目?提高自身竞争力
- Java多线程与并发之ThreadLocal
- BAT一线互联网常考面试题:Spring+并发编程+JVM+设计模式+Redis
- 微软宣布在2030年实现碳负排放,并发布计划时间表
- Java架构-高并发的解决方案
- 高并发服务器架构--SEDA架构分析