1. 程式人生 > >android synchronized 關鍵字用法

android synchronized 關鍵字用法

synchronized是java中表示同步程式碼快的關鍵字。可以放在方法修飾符前,比如private synchronized void test(){},

也可以放在方法內部,修飾某一段特定的程式碼。

synchronized有一個地方需要注意,就是在給普通方法加鎖與給靜態方法加鎖機制是不一樣的。

synchronized在靜態方法上表示呼叫前要獲得類的鎖,而在非靜態方法上表示呼叫此方法前要獲得物件的鎖。 

public class StaticSynDemo { 

private static String a="test"; 

//等同於方法print2 
public synchronized void print1(String b){ //呼叫前要取得StaticSynDemo例項化後物件的鎖 
   System.out.println(b+a); 
} 
public void print2(String b){ 
   synchronized (this) {//取得StaticSynDemo例項化後物件的鎖 
    System.out.println(b+a); 
   } 
} 
//等同於方法print4 
public synchronized static void print3(String b){//呼叫前要取得StaticSynDemo.class類的鎖 
   System.out.println(b+a); 
} 
public static void print4(String b){ 
   synchronized (StaticSynDemo.class) { //取得StaticSynDemo.class類的鎖 
    System.out.println(b+a); 
   }