synchronized執行緒同步

2021-08-31 07:49:42 字數 717 閱讀 4281

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