同期コンテキスト内で、無条件に呼び出されている wait() を報告します。

wait() は通常、ある条件が true になるまでスレッドをブロックするために使用されます。 wait() が無条件に呼び出されている場合、多くの場合はロックの取得前に条件がチェックされています。 このような場合、条件をチェックしてロックを取得するまでの間に条件が true になるとデータ競合が発生する可能性があります。

このインスペクションによって検出されるコンストラクトが必ずしも間違っているわけではありませんが、検査する価値はあります。

例:


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