如何在不使用 stop() 的情况下终止线程
使用 stop() 方法终止线程可能会导致不可预测的行为。本文介绍了一种使用中断来终止线程的替代方法。
stop() 的替代方法
与 stop() 不同,中断会向线程发出信号以优雅地结束其执行。中断是通过Thread.interrupt()方法实现的。当线程被中断时,它将抛出 InterruptedException。
实现示例
考虑以下代码:
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(); } }
在此示例中,线程像往常一样创建并启动。当用户按下 Enter 键时,主线程使用 thread.interrupt() 中断工作线程。工作线程通过抛出 InterruptedException 来处理中断,然后清除中断标志。由于线程在循环内检查中断,因此它最终会在完成当前迭代后结束执行。
注意事项
以上是如何在不使用 stop() 的情况下安全地终止 Java 线程?的详细内容。更多信息请关注PHP中文网其他相关文章!