线程的终止方法

!!! 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();
}
}