page contents

你是如何调用 wait() 方法的?使用 if 块还是循环?为什么?

轩辕小不懂 发布于 2022-04-11 13:45
阅读 417
收藏 0
分类:Java开发
3443
Nen
Nen
- 程序员

处于等待状态的线程可能会收到错误警报和伪唤醒,如果不在循环中检查等待条件,程序就会在没有满足结束条件的情况下退出。


wait() 方法应该在循环调用,因为当线程获取到 CPU 开始执行的时候,其他条件可能还没有满足,所以在处理前,循环检测条件是否满足会更好。下面是一段标准的使用 wait 和 notify 方法的代码:

synchronized (monitor) {

    //  判断条件谓词是否得到满足

    while(!locked) {

        //  等待唤醒

        monitor.wait();

    }

    //  处理其他的业务逻辑

}

请先 登录 后评论