リテラルで初期化されるオブジェクトをロックしている synchronized ブロックを報告します。

文字列リテラルはインターン処理され、CharacterBooleanNumber リテラルはキャッシュから割り当てることができます。 このため、同じリテラルで初期化されるオブジェクトを使用しているシステムの他の部分に、まったく同じオブジェクトへの参照を実際に保持しているものがある可能性があります。 その結果、ロックオブジェクトが private であると見なされた場合に予期しないデッドロック状態が発生する可能性があります。

例:


  class Main {
    final String mutex = "Mutex";
    void method() {
      synchronized (mutex) {
      }
    }
  }

StringCharacterBoolean そして Number オブジェクトのすべての同期を報告するには、「可能な限りすべてのリテラルを警告する」オプションを使用します。