public class a extends thread
@override
public void run()
}}
public class b
}
1.每個執行緒都有乙個自己的count變數,自己減少自己的值,不受其他執行緒影響;
2.資料是不共享的;
表示多個執行緒可以訪問同乙個變數,常用的:投票;
public class a extends thread
}
package sharedatas;
public class b
}
或者
但是從第一種情況可以看出有相同情況,表明a和b同時對變數進行了處理,產生了「非執行緒安全」(即多個執行緒對同乙個變數進行了修改操作,但是值不同統一的現象)——
public class a extends thread
}
執行結果:
總結:1.synchronized關鍵字載入方法最前面;
2.作用是:使執行緒呼叫run方法時,要排隊,也就是說乙個執行緒正在或者還未徹底結束這個執行緒前,run方法不可以被其他執行緒使用;
3.synchronized關鍵字原來:在執行run方法前先判斷run方法是否上鎖了,如果上鎖了,那麼就等待排隊,直到其他執行緒執行完成run方法;該關鍵字可以在任意的方法和物件上鎖,而加上鎖的這段**叫「臨界區」或「互斥區」。
3.場景:銷售員賣出乙個物品時,不可以出現相同的剩餘數量等;
其他:1.執行緒不一定要執行完run方法的,它可能執行到run方法中某一條**就中斷了,執行另乙個執行緒了,而中斷的執行緒又得重新排隊,從中斷的地方開始執行。
Java中線程共享資料
1 採用runnable介面 採用runnable介面 實現共享資料的鎖 synchronized 輸出結果 老公取10元,剩餘90 老公取10元,剩餘80 老公取10元,剩餘70 老公取10元,剩餘60 老公取10元,剩餘50 老婆取10元,剩餘40 老婆取10元,剩餘30 老婆取10元,剩餘20...
Java中線程共享資料
1 採用runnable介面 採用runnable介面 實現共享資料的鎖 synchronized 輸出結果 老公取10元,剩餘90 老公取10元,剩餘80 老公取10元,剩餘70 老公取10元,剩餘60 老公取10元,剩餘50 老婆取10元,剩餘40 老婆取10元,剩餘30 老婆取10元,剩餘20...
Java 多執行緒學習筆記 4 多執行緒共享資料
我們經常說某個變數是執行緒非安全的,某個變數是執行緒安全,這裡 是否安全 針對的是類的例項變數,如果是方法內部的私有變數,不會存在這個問題 package smaug.cloud.provider.thread.t7 created by naonao on 17 12 10.public clas...