什么叫線程安全,舉例說明。


線程在運行的時候會搶奪CPU的執行權,數據是共享的,多個線程執行同一個數據,就會出現安全問題。

比如有三個電影賣票窗口的線程,由於三個窗口的數據是共享的,例如有100張電影票,每賣出一張票ticket--,

當窗口1開始開始對票數減一的時候,這時候窗口2把1窗口線程搶走了,然后操作的也是一份相同的數據,

這時候就會出現窗口1和窗口2同時打印剩余99張票數的情況,重復問題就出現了。當假設票數只剩1張的時候,

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

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

這時候就是出現了線程安全的問題了。

 

線程安全問題解決辦法之一:

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

其他線程訪問不了,訪問完畢之后釋放鎖,才對其他線程繼續開放執行權,這樣就不會多個線程操作同一份數據了,

線程安全問題也就迎刃而解了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM