一文看懂wait和notify的虚假唤醒(spurious wakeups)
Posted 业余草
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文看懂wait和notify的虚假唤醒(spurious wakeups)相关的知识,希望对你有一定的参考价值。
你知道的越多,不知道的就越多,业余的像一棵小草!
你来,我们一起精进!你不来,我和你的竞争对手一起精进!
编辑:业余草
推荐:https://www.xttblog.com/?p=5257
java 多线程 wait 时为什么要用 while 而不是 if?
对于 java 多线程的wait()
方法,我们在 jdk1.6 的说明文档里可以看到这样一段话:
从上面的截图,我们可以看出,在使用 wait 方法时,需要使用 while 循环来判断条件十分满足,而不是 if,那么我们思考以下,如果使用 if 会怎么样?
为方便讲解,我们来看一个被广泛使用的生产消费的例子。demo 代码如下:
/*
生产和消费
*/
package multiThread;
class SynStack {
private char[] data = new char[6];
private int cnt = 0; //表示数组有效元素的个数
public synchronized void push(char ch){
以上是关于一文看懂wait和notify的虚假唤醒(spurious wakeups)的主要内容,如果未能解决你的问题,请参考以下文章
一文看懂wait和notify的虚假唤醒(spurious wakeups)
JUC并发编程 --wait 和 sleep的区别 & 加锁对象的小建议 & wait notify 的正确姿势 & 虚假唤醒
Java-JUC:使用wait,notify|notifyAll完成生产者消费者通信,虚假唤醒(Spurious Wakeups)问题出现场景,及问题解决方案。