Java SE线程的终止方法
CAMELLIA!!! note 目录
线程的终止方法
在Java中,终止线程并不是一个简单的操作,因为不建议直接强制终止一个线程。
Java不再支持如 Thread.stop()
方法,因为这种方式可能会导致数据的不一致和资源的泄漏。相反,推荐的方式是通过设置一个标志来通知线程自行终止。
使用标志位
通过设置一个标志位,让线程在下次检查到该标志位时自行终止。这种方式是最推荐的,因为它允许线程在终止前完成必要的清理工作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public class MyThread extends Thread { private volatile boolean running = true;
public void run() { while (running) { System.out.println("Thread is running..."); try { Thread.sleep(1000); } catch (InterruptedException e) { Thread.currentThread().interrupt(); System.out.println("Thread was interrupted, Failed to complete operation"); } } System.out.println("Thread is stopping..."); }
public void stopThread() { running = false; } }
|
在主程序中,可以通过调用 stopThread()
方法来终止线程:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class Main { public static void main(String[] args) { MyThread myThread = new MyThread(); myThread.start(); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } myThread.stopThread(); } }
|