java 中如何停止一个正在运行的线程
时间: 2024-02-17 11:04:00 浏览: 20
Java 中可以使用两种方式停止一个正在运行的线程:
1. 使用标识位停止线程:在线程内部定义一个标识位,当需要停止线程时,修改标识位的值,然后在线程内部轮询检查该标识位的值,如果发现标识位的值已经改变,则停止线程并退出。
例如:
```
public class MyThread extends Thread {
private volatile boolean isStop = false;
public void stopThread() {
isStop = true;
}
@Override
public void run() {
while (!isStop) {
// 线程执行的代码
}
}
}
```
在需要停止线程的地方调用 `stopThread()` 方法即可停止线程。
2. 使用 `Thread.interrupt()` 方法停止线程:调用线程的 `interrupt()` 方法会中断线程,此时线程会进入中断状态,但并不一定会立即停止线程,需要在线程内部检测是否被中断,并根据情况退出线程。
例如:
```
public class MyThread extends Thread {
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
// 线程执行的代码
}
}
}
```
在需要停止线程的地方调用 `interrupt()` 方法即可停止线程。注意,如果线程在等待某个操作(如 `sleep()`、`wait()`、`join()`)时被中断,会抛出 `InterruptedException` 异常,需要在异常处理中退出线程。