13
class Bob {
  private static final Object locke = new Object();
  private static volatile int value;

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

这与在课堂上同步有何不同,即synchronized(Bob.class){...}

4

1 回答 1

19

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

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

于 2013-06-19T20:12:12.723 回答