微信公众号:路人zhang
网站救助计划

1.为阅读体验,本站无任何广告,也无任何盈利方法,站长一直在用爱发电,现濒临倒闭,希望有能力的同学能帮忙分担服务器成本


2.捐助10元及以上同学,可添加站长微信lurenzhang888,备注捐助网站倒闭后可联系站长领取本站pdf内容


3.若网站能存活下来,后续将会持续更新内容

当前位置: 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()中的条件已经不满足了,出现虚假唤醒。

本站链接:https://www.mianshi.online如需勘误或投稿,请联系微信:lurenzhang888


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