2014-10-08 36 views
0
class public Test 
{ 
    private int counter; 

    public synchronized change() 
    { 
     counter++; 
    } 

    public change2() 
    { 
     synchronized(this){ 
      counter--; 
     } 
    } 

} 

我們可以調用在同一時間的變化和change2?java同步是否與不同名稱的方法一起工作?

+0

http://stackoverflow.com/a/8213220/2864740,http://stackoverflow.com/a/442570/2864740 – user2864740 2014-10-08 01:32:40

回答

3

名稱有什麼關係呢。什麼是鎖定是對象(不是變量,不是參考)。

如果一個線程已開始執行的哪個同步的對象,即試圖同步對同一對象將被阻塞並等待,直到原來的線程完成其塊的執行的任何其他線程上的塊。

+0

的對象,你的意思是測試的一個實例? – IceKing 2014-10-08 01:31:19

+2

@IKKING在這個例子中,是的。但它可以是_any_類的任何實例。 (但不要在'Thread'的實例上同步。) – 2014-10-08 01:32:52