執行緒在執行的時候會搶奪CPU的執行權,資料是共享的,多個執行緒執行同一個資料,就會出現安全問題。
比如有三個電影賣票視窗的執行緒,由於三個視窗的資料是共享的,例如有100張電影票,每賣出一張票ticket--,
當視窗1開始開始對票數減一的時候,這時候視窗2把1視窗執行緒搶走了,然後操作的也是一份相同的資料,
這時候就會出現視窗1和視窗2同時列印剩餘99張票數的情況,重複問題就出現了。當假設票數只剩1張的時候,
由3個執行緒視窗來操作,首先假設視窗1搶到了CPU執行權,會把票數減到0,然後後面的執行緒仍然在執行,然後
就出現了-1和-2張票數的問題,這就是是負數票的問題,
這時候就是出現了執行緒安全的問題了。
執行緒安全問題解決辦法之一:
同步方法:就是把synchronized關鍵字加到方法上,把程式碼用程式碼塊鎖起來,第一個執行緒執行過程中是上鎖的,
其他執行緒訪問不了,訪問完畢之後釋放鎖,才對其他執行緒繼續開放執行權,這樣就不會多個執行緒操作同一份資料了,
執行緒安全問題也就迎刃而解了。