如何从Java中的另一个线程中删除一个线程?

Raj*_*aji 8 java multithreading

我从主线程调用两个线程,称它们为线程1和线程2.当线程1停止时,我也想停止或杀死线程2.我怎么能这样做?我想要的实际输出有一个变化.那就是一个主类也是thread.From主类我调用thread1和thread2.I从主类给出一个输入但是当这个输入被改变时我想杀死正在运行的thread1并再次用另一个输入启动它.第二个线程,thread2将运行thread1给出的输出.所以当第一个线程被杀死时,第二个线程将被运行但只有当t6是该线程的输入时才会给出输出.

aby*_*byx 13

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

您可能还有兴趣将第二个线程设置为守护程序线程,这意味着如果VM中的所有其他线程都已完成,则该进程将退出.


Bri*_*new 6

请参阅此Java专家文章,了解如何干净地关闭线程.

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