扫码关注微信公众号

回复“面试手册”,获取本站PDF版

回复“简历”,获取高质量简历模板

回复“加群”,加入程序员交流群

回复“电子书”,获取程序员类电子书

当前位置: Java > Java并发高频面试题 > 16.wait()方法一般在循环块中使用还是if块中使用?

在JDK官方文档中明确要求了要在循环中使用,否则可能出现虚假唤醒的可能。官方文档中给出的代码示例如下:

synchronized(obj){
    while(<condition does not hold>){
         obj.wait();
    }
    //满足while中的条件后执行业务逻辑
}

如果讲while换成if

synchronized(obj){
    if(<condition does not hold>){
         obj.wait();
    }
    //满足while中的条件后执行业务逻辑
}

当线程被唤醒后,可能if()中的条件已经不满足了,出现虚假唤醒。


点击面试手册,获取本站面试手册PDF完整版