getClass()類和Class類,線程的靜態同步方法

同步代碼塊的鎖是自己定義的對象,每個Object對象都有一個標誌位(屬性),默認爲1。當線程執行同步代碼塊的時候,首先檢查鎖對象的標誌位,如果爲1則執行並且將該標誌位置爲0。如果爲0則發生阻塞,等待正在執行的線程執行完畢自動將將鎖置爲1,接下來才能繼續執行。

注意:多個對象共享的鎖是相同的,所以鎖對象的創建代碼不能放在run方法中。

 

同步方法的鎖是當前調用該方法的對象,也就是this指向的對象。也就是實現Runnable接口的類的對象。這也就是所以爲了實現共同訪問一個資源要用Runnable接口去實現而非繼承Thread類。

 

同步靜態方法的鎖是該方法所在類的Class對象,該對象可以用類名.class的方式獲取。這個對象和該類的對象的getClass()的返回值是一樣的。這個對象在加載類的時候由虛擬機自動創建。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章