虚假唤醒

进入同步方法后,判断不符合要求,进行wait等待。被唤醒后并没有重新进行判断,直接从等待处往下执行,导致数据异常。
解决方案:每次唤醒后重新判断。用while代替if
synchronized (obj) {
while ()
obj.wait(timeout);
... // Perform action appropriate to condition
}
-jdk1.8 Object wait()文档

posted @ 2021-11-03 12:30  GitHub-ahao  阅读(80)  评论(0)    收藏  举报