扫码关注微信公众号
回复“面试手册”,获取本站PDF版
回复“简历”,获取高质量简历模板
回复“加群”,加入程序员交流群
回复“电子书”,获取程序员类电子书
在JDK官方文档中明确要求了要在循环中使用,否则可能出现虚假唤醒的可能。官方文档中给出的代码示例如下:
synchronized(obj){
while(<condition does not hold>){
obj.wait();
}
//满足while中的条件后执行业务逻辑
}
如果讲while
换成if
,
synchronized(obj){
if(<condition does not hold>){
obj.wait();
}
//满足while中的条件后执行业务逻辑
}
当线程被唤醒后,可能if()
中的条件已经不满足了,出现虚假唤醒。
本站链接:https://www.mianshi.online,如需勘误或投稿,请联系微信:lurenzhang888
点击面试手册,获取本站面试手册PDF完整版