首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Java中杀死另一个线程中的线程?

如何在Java中杀死另一个线程中的线程?
EN

Stack Overflow用户
提问于 2009-11-05 21:19:41
回答 4查看 15.3K关注 0票数 8

我从一个主线程中调用两个线程,分别称为线程1和线程2。当线程1停止时,我也想停止或终止线程2。我是从主类给thread1一个输入,但是当这个输入被改变时,我想杀死正在运行的thread1,并用另一个input.The第二个线程再次启动它,thread2将与线程1给出的输出一起运行,所以当第一个线程被杀死时,第二个线程将会运行,但是只有当t6here是那个线程的输入时,它才会给出一个输出。

EN

回答 4

Stack Overflow用户

发布于 2009-11-05 21:25:44

Java已经弃用了显式杀死另一个线程的方法(如Thread.stop / Thread.destroy)。正确的方法是确保另一个线程上的操作能够处理被告知停止的操作(例如,它们需要一个InterruptedException,这意味着您可以调用Thread.interrupt()来停止它)。

您还可能对将第二个线程设置为daemon thread感兴趣,这意味着如果VM中的所有其他线程都已完成,则进程将退出。

票数 13
EN

Stack Overflow用户

发布于 2009-11-05 21:29:22

有关如何干净地关闭线程的信息,请参阅this Java Specialist article

简而言之,本文推荐在线程代码中使用Thread.interrupt()加上适当的InterruptedException处理。这本身就是一个有趣的讨论,而且我很少看到正确的讨论。

票数 6
EN

Stack Overflow用户

发布于 2009-11-05 21:29:19

根据these instructions的说法,最好使用标志变量来告诉其他线程干净利落地停止工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1680525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档