synchronized,執行緒,資源的關係

2021-10-10 06:07:52 字數 761 閱讀 9980

//synohronized的三種使用方式

//1.例項方法

public

synchronized

void

foo1()

synchronizd修飾在例項方法上,當前執行緒鎖的是呼叫這個方法的例項

鎖的持有者:當前執行緒

鎖的資源:呼叫該方法的例項

//2.靜態方法

public

static

synchronized

void

foo2()

synchronized修飾在靜態方法上,當前執行緒鎖的是該類的class物件

鎖的持有者:當前執行緒

鎖的資源:該方法所在類的類物件

//3.**塊

public

void

foo(

)}

鎖的持有者:當前執行緒

鎖的資源:由開發者指定,可以是類物件xx.class,也可以是例項物件this

如果對某一共享資源進行鎖定,那麼執行緒在競爭這個資源時必須持有了該資源的鎖,才能夠對該資源進行訪問,否則將進入阻塞等待狀態。

執行緒synchronized 例子

public class foo public int fix int y return x public class myrunnable implements runnable catch interruptedexception e system.out.println thread.curr...

執行緒同步synchronized

synchronized只是保證在同乙個時刻,其他執行緒不能訪問鎖定的資源,但是其他方法或者是變數不能鎖定控制的 synchronized obj 上面語法格式中synchronized後括號裡的obj就是同步監視器,上面 的含義是 執行緒開始執行同步 塊之前,必須先獲得對同步監視器的鎖定。任何時刻...

執行緒鎖 synchronized

使用 synchronized解決執行緒同步問題相比較nslock要簡單一些,日常開發中也更推薦使用此方法。首先選擇乙個物件作為同步物件 一般使用self 然後將 加鎖 爭奪資源的讀取 修改 放到 塊中。synchronized中的 執行時先檢查同步物件是否被另乙個執行緒占用,如果占用該執行緒就會處...