리터럴로 초기화되는 객체를 잠그는 synchronized 블록을 보고합니다.

문자열 리터럴은 억류(intern)되며 Character, BooleanNumber 리터럴은 캐시에서 할당될 수 있습니다. 이로 인해 동일한 리터럴로 초기화된 객체를 사용하는 시스템의 다른 부분이 실제로는 동일한 객체에 대한 참조를 보유할 수 있습니다. 이때 lock 객체가 private으로 간주될 경우 예기치 않은 교착 상태가 발생할 수 있습니다.

예:


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

가능한 모든 리터럴에 대해 경고 옵션을 사용하여 String, Character, BooleanNumber 객체의 동기화를 보고합니다.