多執行緒安全問題

2021-10-01 21:03:49 字數 496 閱讀 7815

這裡的安全問題可以理解為**實現在邏輯上的問題,比如:火車站賣票

100張票讓4個人去賣,一定不能出現賣的票是負數問題,那麼開啟多執行緒後,如何才能保證賣的票不可能存在負數呢?

常用的解決方法有兩種:

1,使用同步**塊,把需要同步的**再放同步**塊中

2,使用同步函式

同步的鎖,可以理解為就是那個物件!

同步**塊的寫法:synchronized (任意物件)

同步函式:public synchronized void show(),此時synchronized的鎖預設的是 this,所以在同時使用同步**塊和同步函式的時候,同步**塊中放的物件必須也得是 this 才能保證執行緒安全 synchronized(this)

靜態的同步函式:public static synchronized void show(),這時候的synchronized的鎖是該函式所屬的位元組碼檔案物件,可以使用getclass()方法獲取,也可以使用當前 類名.clas表示

多執行緒二 多執行緒安全問題

當多個執行緒共享同乙個全域性或者靜態變數,做寫的操作,可能會發生資料衝突問題,也就是執行緒安全問題。讀操作和區域性變數是不會發生的。二 執行緒安全的解決方法 該資源只能讓當前執行緒操作,操作完成之後,再讓其他執行緒執行 多執行緒之間同步 synchronized 使用鎖 lock 語法 synchr...

多執行緒(多執行緒的安全問題)

多執行緒的執行出現安全問題。非常可怕的問題,一出問題比較惱火 問題原因 重點 當多條語句在操作同乙個執行緒共享資料時,乙個執行緒對多條語句只執行了一部分,還沒執行完,另乙個執行緒參與進來執行。導致共享資料的錯誤。解決方法 對多條操作共享資料的語句,只能讓乙個執行緒都執行完,在執行過程中,其他執行緒不...

多執行緒之執行緒安全問題

講到執行緒安全 enn。怎麼說呢 這是乙個很複雜的東西 算了直接上 吧 文章中 有些我也是複製的不過我不像別人看都不看 我都看過一邊覺得對的我才會複製 public class securitythead public static void main string args catch inter...