同步方法鎖定的是this物件

2021-10-07 03:22:32 字數 1010 閱讀 9098

synchronized關鍵字可以修飾**塊、靜態**塊、普通方法

當修飾**塊、靜態**塊,此時的**塊就被稱為同步**塊;

當修飾方法時,被稱為同步方法

證明同步方法是鎖定的this物件,接下來看一段**,建立乙個普通類thislock,其中包括兩個被synchronized關鍵字修飾的方法,在main方法中建立此類的例項物件,並建立兩個執行緒,分別在兩個執行緒中呼叫thislock中的method1方法和method2方法

public

class

thislocktest}.

start()

;new

thread

("執行緒2")}

.start()

;}}class

thislock

catch

(interruptedexception e)

}public

synchronized

void

method2()

catch

(interruptedexception e)

}}

看一下執行結果,中間sleep10s

當前執行緒-

>執行緒1

fri jun 1211:

51:15 cst 2020

當前執行緒-

>執行緒2

fri jun 1211:

51:25 cst 2020

通過執行結果可以看出,只有當執行緒1執行完釋放鎖之後,執行緒2才可以執行,這也就證明synchronized關鍵字在修飾方法時,鎖定的是this物件,同時也證明了,當執行緒sleep時,不會釋放鎖

C 中物件的lock鎖定

寫c 時,遇到有過程需要排隊執行,就使用了lock方法進行鎖定,鎖定物件為一list陣列,在臨界區 段中對該資料進行讀取操作。在某些偶然情況下,會發現該資料在鎖定 段以外進行訪問時,會丟擲乙個異常 源陣列長度不足。請檢查 srcindex 和長度以及陣列的下限 此時再執行其他操作就無效了。後查閱資料...

充當讀 寫鎖定機制的物件

介紹 我的目標是建立可以充當讀 寫鎖定機制的物件。任何執行緒都可以鎖定它以進行讀取,但是只有乙個執行緒可以鎖定它以進行寫入。在寫入執行緒釋放它之前,所有其他執行緒都將等待。在釋放任何其他執行緒之前,寫執行緒不會獲取互斥體。我可以使用slim reader writer鎖,但是 它們不是遞迴的,例如,...

判斷是物件還是陣列的方法

一些陣列的基礎知識,感覺很有意思 通過typeof是無法判斷是物件還是陣列的 第一 使用instanceof進行判斷,a instanceof b即物件a是不是建構函式b構造出來的,是即返回true,不是即返回false.第二 在typeof上進行enhancement,typeof陣列和物件返回都...