解讀synchronized關鍵字

2021-08-29 18:59:11 字數 876 閱讀 9298

[size=large]最近在寫多執行緒程式,網上收集總結了synchronized的用法,結果如下:[/size]

1、synchronized關鍵字的作用域有二種:

1)是某個物件例項內,synchronized amethod(){}可以防止多個執行緒同時訪問這個物件的synchronized方法(如果乙個物件有多個synchronized方法,只要乙個執行緒訪問了其中的乙個synchronized方法,其它執行緒不能同時訪問這個物件中任何乙個synchronized方法)。這時,不同的物件例項的synchronized方法是不相干擾的。也就是說,其它執行緒照樣可以同時訪問相同類的另乙個物件例項中的synchronized方法;.注意:用synchronized 來鎖定乙個物件的時候,如果這個物件在鎖定**段中被修改了,則這個鎖也就消失了。

2)是某個類的範圍a:synchronized static astaticmethod{}防止多個執行緒同時訪問這個類中的synchronized static 方法。它可以對類的所有物件例項起作用。

是某個類的範圍b(靜態物件鎖技術): private static object lock=new object(); //必須是靜態的。這樣鎖的是這個類.或者可以這樣synchronized testthread.class){}.

2、除了方法前用synchronized關鍵字,synchronized關鍵字還可以用於方法中的某個區塊中,表示只對這個區塊的資源實行互斥訪問。用法是: synchronized(this),它的作用域是當前物件;

3、synchronized關鍵字是不能繼承的,也就是說,基類的方法synchronized f(){} 在繼承類中並不自動是synchronized f(){},而是變成了f(){}。繼承類需要你顯式的指定它的某個方法為synchronized方法;

關於java的synchronized關鍵字

synchronized最關鍵的就是確定鎖的物件,我認為有兩種,類和物件 對類的加鎖有兩種方法 1.public synchronized static void fun 在靜態方法前加上synchronized關鍵字。2.synchronized 類名.class 將加鎖的 塊的鎖的位置,寫上類物...

執行緒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就是同步監視器,上面 的含義是 執行緒開始執行同步 塊之前,必須先獲得對同步監視器的鎖定。任何時刻...