什麼叫執行緒安全,舉例說明。

依然耀眼發表於2021-06-22

執行緒在執行的時候會搶奪CPU的執行權,資料是共享的,多個執行緒執行同一個資料,就會出現安全問題。

比如有三個電影賣票視窗的執行緒,由於三個視窗的資料是共享的,例如有100張電影票,每賣出一張票ticket--,

當視窗1開始開始對票數減一的時候,這時候視窗2把1視窗執行緒搶走了,然後操作的也是一份相同的資料,

這時候就會出現視窗1和視窗2同時列印剩餘99張票數的情況,重複問題就出現了。當假設票數只剩1張的時候,

由3個執行緒視窗來操作,首先假設視窗1搶到了CPU執行權,會把票數減到0,然後後面的執行緒仍然在執行,然後

就出現了-1和-2張票數的問題,這就是是負數票的問題,

這時候就是出現了執行緒安全的問題了。

 

執行緒安全問題解決辦法之一:

同步方法:就是把synchronized關鍵字加到方法上,把程式碼用程式碼塊鎖起來,第一個執行緒執行過程中是上鎖的,

其他執行緒訪問不了,訪問完畢之後釋放鎖,才對其他執行緒繼續開放執行權,這樣就不會多個執行緒操作同一份資料了,

執行緒安全問題也就迎刃而解了。

相關文章