2017-07-28 142 views
0

thisExample.this是同一個對象嗎?同步之間的區別

E.g.和Example.class裏面的​​是同一個對象嗎?

class Example { 
    public Example() { 
     synchronized(this) { 
      // some code 
     } 
    } 
} 


class Example { 
    public Example() { 
     synchronized(Example.class) { 
      // some code 
     } 
    } 
} 
+0

顯然不是。第一個是一個對象,第二個是整個班級。 – Tom

+0

'Example.class'是示例類。 'this'是'Example'的特定實例。不一樣。 – khelwood

+0

不,他們是不一樣的。 'this'返回當前實例,而'Example.class'返回'Example'類的實例。 – Lino

回答

2

沒有,this使用當前對象作爲顯示器,但Example.class使用Example.class作爲顯示器。

1

不,thisExample的實例,而Example.classClass的實例。

0

這將同步訪問鎖定的類而不是this/current對象。使用你認爲更容易和更有效的方法。

1

同步上this實例級鎖定,這意味着該臨界區不能與同一個對象重新輸入。

同步上Example.class類級別鎖定,這意味着類的沒有其他實例,包括this,可以輸入一個關鍵部分。

正如你所看到的,級鎖從某種意義上說,鎖定更爲激烈。