为什么在静态锁成员上同步,而不是在类上进行同步?

2022-09-04 19:53:18
class Bob {
  private static final Object locke = new Object();
  private static volatile int value;

  public static void fun(){
     synchronized(locke){
       value++;
     }
  }      
}

这与类上的同步有何不同,即synchronized(Bob.class){...}


答案 1

其他一些代码可以通过执行 .如果他们这样做,你的代码会突然与他们的代码争夺锁,可能会破坏你的代码。synchronized(Bob.class)

如果无法从需要对象的对象外部访问该对象,则该危险将被消除。lock


答案 2

推荐