【線程篇】stop() 和suspend()



1.為什么不推薦用 stop()和 suspend()


stop這個方法將終止所有未結束的方法,包括run方法。當一個線程停止時候,他會立即釋放所有他鎖住對象上的鎖。這會導致對象處於不一致的狀態。假如一個方法在將錢從一個賬戶轉移到另一個賬戶的過程中,
在取款之后存款之前就停止了。那么現在銀行對象就被破壞了。因為鎖已經被釋放了。當線程想終止另一個線程的時候,它無法知道何時調用stop是安全的,
何時會導致對象被破壞。所以這個方法被棄用了。你應該中斷一個線程而不是停止他。







suspend不會破壞對象。但是,如果你用一個suspend掛起一個有鎖的線程,那么在鎖恢復之前將不會被釋放。如果調用suspend的方法線程試圖取得相同的鎖,程序就會死鎖。
 


免責聲明!

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



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