wait()
。
wait()
通常用于在某个条件为 true 前阻塞线程。 如果是无条件调用 wait()
,它通常表示在获取锁定之前检查了条件。 在这种情况下可能会发生数据竞争,条件在得到检查和获取锁定之间变为 true。
虽然此检查发现的结构未必不正确,但肯定值得检查。
示例:
class Bar {
void foo() throws InterruptedException {
synchronized (this) {
wait(); // 警告
}
}
}