(需要同步操作共享資料的**塊)
一、產生的原因
1、執行緒任務中有共享資料;
2、執行緒任務中有多條對共享資料的操作。
乙個執行緒在操作共享資料的過程中,其他執行緒參與了運算,造成了資料的錯誤。
二、解決思想
只要保證多條操作共享資料的**在某一時間段,被一條執行緒執行,在執行期間不允許其他執行緒參與計算。
三、解決方式
1、用同步**塊
synchronized(物件)
其中的 「物件」 就是所謂的 「鎖」 ,就是同步機制。要保證鎖的唯一性!
同步的前提:多執行緒在同步中必須使用同乙個鎖(物件)!!
2、同步函式。
在函式的返回值前面加上synchronized的關鍵字
同步函式使用的鎖就是this物件
位元組碼物件表示方式: 類名.class
多執行緒安全問題
這裡的安全問題可以理解為 實現在邏輯上的問題,比如 火車站賣票 100張票讓4個人去賣,一定不能出現賣的票是負數問題,那麼開啟多執行緒後,如何才能保證賣的票不可能存在負數呢?常用的解決方法有兩種 1,使用同步 塊,把需要同步的 再放同步 塊中 2,使用同步函式 同步的鎖,可以理解為就是那個物件!同步...
多執行緒(多執行緒的安全問題)
多執行緒的執行出現安全問題。非常可怕的問題,一出問題比較惱火 問題原因 重點 當多條語句在操作同乙個執行緒共享資料時,乙個執行緒對多條語句只執行了一部分,還沒執行完,另乙個執行緒參與進來執行。導致共享資料的錯誤。解決方法 對多條操作共享資料的語句,只能讓乙個執行緒都執行完,在執行過程中,其他執行緒不...
多執行緒的安全問題
首先先提出幾個問題 1.多執行緒程式設計何時會出現執行緒不安全的問題?2.如何解決執行緒不安全的問題?執行緒不安全的本質是多執行緒共享資料,那麼什麼情況下多執行緒會共享資料?無外乎這麼幾種情況 1 多執行緒訪問單例項中的例項變數 2 多執行緒訪問靜態變數 下面將舉例說明,這個例子模擬鐵路售票系統,實...