public class testsyn implements runnable
public synchronized voidm2()throws exception
public void run()catch(exception e)
}public static voidmain(string args) throws exception
}以上程式主線程睡眠1秒,所以執行緒t1先執行,賦值b-=2000;b的值變成1000
後進入睡眠thread.sleep(5000);
這是主線程睡眠1秒後執行t.m1();b的值變成0
執行結果
mainb====0
b*************************0
b**********=0
如果m1方法也同步後,即
public synchronized voidm1() throws exception
這是執行緒t1先執行,b-=2000;後b的值為1000,睡眠5秒;m1也同步了,他們都對b的值進行修改,所以必須等m2執行完後再執行m1方法。
執行結果:
b**********=1000
mainb====0
b*************************0
Java多執行緒 synchronized同步方法
synchronized同步方法是為了解決 非執行緒安全 的問題,所謂 非執行緒安全 是指多個執行緒對同乙個物件中的變數進行併發訪問時發生,產生 髒讀 的情況。非執行緒安全 問題存在於 例項變數 中,如果是方法內部的私有變數,則不存在 非執行緒安全 問題,也就是 執行緒安全 的了。demo hass...
執行緒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就是同步監視器,上面 的含義是 執行緒開始執行同步 塊之前,必須先獲得對同步監視器的鎖定。任何時刻...