停止线程
时间: 2023-06-30 17:22:31 浏览: 94
在 Java 中,停止线程不推荐使用 `Thread.stop()` 方法,因为它可能会导致一些不可预料的因素。在实际开发中,可以考虑使用以下方式来停止线程:
1. 使用标志位来控制线程的执行。在线程中设置一个标志位,当需要停止线程时,将标志位设置为 true,线程在下一个循环中检测到标志位变化后,自行停止执行。
示例代码:
```java
public class MyThread extends Thread {
private volatile boolean stop = false;
public void stopThread() {
stop = true;
}
public void run() {
while (!stop) {
// 线程执行的任务
}
}
}
```
2. 使用 `Thread.interrupt()` 方法。该方法会给线程设置一个中断标志位,线程在合适的时候检测到中断标志位变化后,自行停止执行。
示例代码:
```java
public class MyThread extends Thread {
public void run() {
while (!Thread.currentThread().isInterrupted()) {
// 线程执行的任务
}
}
}
// 停止线程的代码
myThread.interrupt();
```
需要注意的是,如果线程在执行过程中使用了阻塞方法(如 `Thread.sleep()`、`Object.wait()` 等),那么该线程在检测到中断标志位变化后,会抛出 `InterruptedException` 异常,需要在 catch 块中处理异常并停止线程的执行。
阅读全文