gpt4 book ai didi

java - 取消 future 与停止线程

转载 作者:行者123 更新时间:2023-12-05 01:52:51 24 4
gpt4 key购买 nike

在非常古老的日子里,曾经有一种方法可以“停止”或“杀死”线程,但由于它会导致系统不稳定,因此已被弃用。不过我注意到,可以“取消”正在运行的 future 。引号在那里是因为我不知道在操作系统级别如何处理线程。

对于我的教育,取消 Future、有效取消线程和停止线程之间有什么区别?为什么取消没问题,但在过去停止/杀死线程却很糟糕?

最佳答案

Cancelling 告诉 Future 不再需要它的结果(如果它尚未完成),并让它干净地停止,而 Thread.stop() 会杀死底层 native 线程并释放其所有监视器。线程没有机会结束它正在做的事情或将任何东西置于已知的良好状态。

不同之处在于,一个发送消息,但让收件人按照自己的方式回复消息,而另一个只是强行停止,立即有效。 (让接收者以自己的方式响应甚至可能意味着作业将继续执行,因为 Future 的不同实现可能会以不同方式处理取消,但任何结果仍将被忽略。)

这就像在汽车比赛中发出红旗,告诉汽车它需要在下一圈进站进站,与突然在赛道中间的正前方竖起一堵墙之间的区别然后它撞上了汽车。

关于java - 取消 future 与停止线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71445135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com