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