synchronized的兩種方式
synchronized可以用來修飾**塊和方法。
synchronized修飾普通方法時,鎖物件是this物件。修飾靜態方法時,鎖物件是位元組碼檔案物件。
1、同步方法
synchronized修飾普通方法
public
synchronized
void
run(
)catch
(interruptedexception e)
system.out.
println(2);}
使用同一物件訪問demo demo =
如果使用不同的物件訪問
synchronized修飾靜態方法
public
static
synchronized
void
run(
)catch
(interruptedexception e)
system.out.
println(2);}
使用不同的物件訪問demo demo =
newdemo()
;new
thread((
)-> demo.
run())
.start()
;demo demo2 =
newdemo()
;new
thread((
)-> demo2.
run())
.start()
;
可以看到結果是同步的,因為當修飾靜態方法時,鎖物件是class位元組碼檔案物件,而兩個物件是同乙個class檔案,所以使用的是乙個鎖。 synchronized關鍵字解析
一 修飾方法 1.修飾普通方法 對呼叫此方法的物件加鎖 2.修飾static方法 對呼叫此方法的類的所有物件加鎖 3.不能修飾構造方法,但是可以在構造方法內部修飾 塊 二 修飾 塊 1.synchronized this 相當於修飾普通方法 2.synchronized a.class 相當於修飾s...
解讀synchronized關鍵字
size large 最近在寫多執行緒程式,網上收集總結了synchronized的用法,結果如下 size 1 synchronized關鍵字的作用域有二種 1 是某個物件例項內,synchronized amethod 可以防止多個執行緒同時訪問這個物件的synchronized方法 如果乙個物...
synchronized 關鍵字分析
synchronized是典型的可衝入鎖,jdk1.5之後做了較大的優化 如圖,synchronized可以用在方法上也可以使用在 塊中,其中方法是例項方法和靜態方法分別鎖的是該類的例項物件和該類的物件。而使用在 塊中也可以分為三種,具體的可以看上面的 這裡的需要注意的是 如果鎖的是類物件的話,儘管...