报告在同步上下文中无条件调用的 wait()

wait() 通常用于在某个条件为 true 前阻断线程。 如果是无条件调用 wait(),它通常表示在获取锁之前检查了条件。 在这种情况下可能会发生数据竞争,在检查它的时间和获取锁的时间之间的条件变为 true。

虽然该检查发现的结构未必不正确,但它们肯定值得检查。

示例:


  class Bar {
      void foo() throws InterruptedException {
          synchronized (this) {
              wait(); // 警告
          }
      }
  }