小编Sea*_*ean的帖子

同步对静态字段的访问

在Josh Bloch的Effective Java第67章中,他提到如果方法修改静态字段,则必须同步对该字段的访问,因为客户端无法对此类方法执行外部同步.我不太明白为什么客户端无法在静态方法上执行外部同步?

内部同步实现:

public class Serial {
  private static int serialNumber = 0;

  public synchronized static void incSerial() {  
      serialNumber++;
  }

}
Run Code Online (Sandbox Code Playgroud)

如果没有实现内部同步,客户端可以在外部同步:

synchronize(Serial.class) {

  Serial.incSerial();
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

java static synchronization

6
推荐指数
1
解决办法
1636
查看次数

标签 统计

java ×1

static ×1

synchronization ×1