我从一个主线程中调用两个线程,分别称为线程1和线程2。当线程1停止时,我也想停止或终止线程2。我是从主类给thread1一个输入,但是当这个输入被改变时,我想杀死正在运行的thread1,并用另一个input.The第二个线程再次启动它,thread2将与线程1给出的输出一起运行,所以当第一个线程被杀死时,第二个线程将会运行,但是只有当t6here是那个线程的输入时,它才会给出一个输出。
发布于 2009-11-05 13:25:44
Java已经弃用了显式杀死另一个线程的方法(如Thread.stop / Thread.destroy)。正确的方法是确保另一个线程上的操作能够处理被告知停止的操作(例如,它们需要一个InterruptedException,这意味着您可以调用Thread.interrupt()来停止它)。
您还可能对将第二个线程设置为daemon thread感兴趣,这意味着如果VM中的所有其他线程都已完成,则进程将退出。
发布于 2009-11-05 13:29:22
有关如何干净地关闭线程的信息,请参阅this Java Specialist article。
简而言之,本文推荐在线程代码中使用Thread.interrupt()
加上适当的InterruptedException
处理。这本身就是一个有趣的讨论,而且我很少看到正确的讨论。
发布于 2009-11-05 13:29:19
根据these instructions的说法,最好使用标志变量来告诉其他线程干净利落地停止工作。
https://stackoverflow.com/questions/1680525
复制相似问题