报告 thisclass 表达式的同步。 所报告的结构包括 synchronized 块以及对 wait()notify()notifyAll() 的调用。

同步 thisclass 表达式可能并非好主意,原因有几点:

  1. 它使同步成为类的外部接口的一部分,导致将来很难更改为其他锁定机制,
  2. 难以跟踪究竟是谁锁定了给定的对象,
  3. 使得故意为之或在子类化时很容易意外发生的拒绝服务攻击成为可能。

替代做法是考虑在 private final 锁对象上同步,对该对象的访问可以完全控制。

示例:


  public void print() {
    synchronized(this) { // 警告: 对 'this' 的锁操作可能会产生不可预见的副作用
      System.out.println("synchronized");
    }
  }