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