android synchronized 關鍵字用法
阿新 • • 發佈:2019-01-23
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); }