通过抛出异常来杀死Java线程

时间:2014-12-03 07:46:25

标签: java multithreading exception kill-process

我认为在你想要的时候杀死一个thread对很多人来说都是一个问题。我最近遇到了通过抛出thread来杀死exception的方法。您对此有何看法?有没有人之前实现过这样的东西?

2 个答案:

答案 0 :(得分:2)

你不应该杀死一个线程。你应该让它停下来。如果你有一个循环,你应该停止这个循环。如果你有一些耗时的功能,比如网络连接,你应该停止这个网络功能而不是杀死线程。无法保证使用Thread.stop()函数

停止某个帖子

答案 1 :(得分:1)

停止线程的最佳方法是从线程中抛出InterruptedException 。如果抛出异常,则确保执行catchfinally块,因此线程能够释放锁和资源,关闭文件和已打开的连接等。

通常你想要从另一个线程停止一个线程。你应该使用Thread.stop()方法,因为它会立即停止线程,当关闭的线程仍然拥有锁,从不关闭的文件等时导致死锁。“官方”方式停止一个线程就是在你要停止的线程上调用interrupt()方法。这会设置一个内部标志,可以通过Thread.interrupted()进行检查。现在每个线程应该在方便的时候轮询Thread.interrupted(),如果设置了标志,则抛出InterruptedException

if (Thread.interrupted()) throw new InterruptedException();