不使用 stop() 杀死线程
在多线程编程中,可能有必要终止线程。虽然 stop() 方法提供了一个突然的解决方案,但由于潜在的资源泄漏,不鼓励使用它。本文研究了线程终止的另一种方法:中断。
使用中断
中断方法向线程发出信号以优雅地终止其执行。调用时,线程检查其中断状态,如果为 true,则抛出 InterruptedException。可以在线程的 run 方法中捕获并处理此异常,使其清理资源并正常退出。
下面是使用中断的示例:
public class HelloWorld { public static void main(String[] args) throws Exception { Thread thread = new Thread(new Runnable() { public void run() { try { while (!Thread.currentThread().isInterrupted()) { Thread.sleep(5000); System.out.println("Hello World!"); } } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } }); thread.start(); System.out.println("press enter to quit"); System.in.read(); thread.interrupt(); } }
注意事项
已发布代码
发布的代码存在几个问题:
总之,使用中断提供了一种更受控制的线程终止方法,确保正确清理资源。不过,这需要被停止的线程的配合。
以上是如何在不使用 stop() 的情况下安全地终止 Java 线程?的详细内容。更多信息请关注PHP中文网其他相关文章!