在非常古老的日子里,曾經有一種“停止”或“殺死”執行緒的方法,盡管由于它允許系統不穩定而已被棄用。不過我注意到,“取消”正在運行的未來是可能的。引號在那里是因為我不知道執行緒在作業系統級別是如何處理的。
對于我的教育,取消 Future、有效地取消執行緒和停止執行緒有什么區別?為什么取消可以,但在過去停止/殺死一個執行緒不好?
uj5u.com熱心網友回復:
Canceling 告訴 Future 它的結果不再需要(如果它還沒有完成),并讓它干凈地停止,而 Thread.stop() 殺死底層的本機執行緒并釋放它的所有監視器。該執行緒沒有機會結束它正在做的事情或將任何東西置于已知的良好狀態。
不同之處在于,一個發送訊息,但讓接收者按照自己的條件回應訊息,而另一個只是強行阻止它,立即有效。(讓接收者以自己的方式回應甚至可能意味著作業將繼續執行,因為不同的實作Future可能會以不同的方式處理取消,但仍然會忽略任何結果。)
這就像在賽車比賽中拔出紅旗,告訴汽車它需要在下一圈進站,與突然在賽車正前方的賽道中間設定一堵墻之間的區別,然后它崩潰了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/442894.html
上一篇:如何在python中從另一個類并行更新一個類的屬性值?
下一篇:C :丟棄執行緒與執行緒池
