【发布时间】:2013-08-04 17:39:16
【问题描述】:
有什么方法可以在不使用已弃用的 stop() 的情况下停止线程?
线程从可能包含无限循环的可能写得不好的类中调用一些方法。由于我无法修改此类,因此我无法控制循环条件,因此无法使用 interrupt() 或任何其他变量正常退出。在这种情况下使用 stop() 是否合理?
【问题讨论】:
-
请记住,即使
stop也不能保证您的恶意线程会停止。一个简单的try {...} catch (Throwable t) {}将使线程无法停止。 -
我迷路了。为什么 try/catch 会阻止我停止线程?
-
stop除了在线程中抛出异常外,什么也不做。异常处理的语义没有改变。自己试试吧:Thread t = new Thread() { public void run() { for (;;) try { System.out.println("Still running"); Thread.sleep(100); } catch (Throwable t) {} } }; t.start(); t.stop();
标签: java multithreading infinite-loop