wait方法没有满足条件也被唤醒,
四个线程中,两个作为生产者(1, 3),两个作为消费者(2,4),1号生产者++, 挂起后,3号线程抢占到,满足条件,被挂起,3号线程代码停止在wait处,1号线程又抢占到资源,满足条件,被wait()挂起,然后3号又抢占到资源,此时,继续从wait()代码处继续向下执行,所以代码出现问题。
解决方法: while 代替if
wait方法没有满足条件也被唤醒,
四个线程中,两个作为生产者(1, 3),两个作为消费者(2,4),1号生产者++, 挂起后,3号线程抢占到,满足条件,被挂起,3号线程代码停止在wait处,1号线程又抢占到资源,满足条件,被wait()挂起,然后3号又抢占到资源,此时,继续从wait()代码处继续向下执行,所以代码出现问题。
解决方法: while 代替if
上一篇:java集合整体架构
Java Thread Dump文件分析
最近B站学习狂神的JUC并发编程时,听到了虚假唤醒这个词,虽然狂神进行了代码的演示,但我还是不太理解为什么使用if判断包装
一、什么是虚假唤醒?多线程环境下,有多个线程执行了wait()方法,需要其他线程执行notif
举报文章
请选择举报类型
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M