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陣列和物件返回都...