立刻终止线程,并且不适用thread.stop
时间: 2023-07-28 08:25:28 浏览: 110
如果要立即终止一个线程,而不使用Thread.stop()方法,可以采用以下方法:
1. 设置一个boolean类型的标志,线程在执行过程中定时检查这个标志,如果为true就停止执行。
2. 使用Thread.interrupt()方法,它会向线程发送一个中断信号,线程可以在检查到中断信号后自行停止执行。需要注意的是,线程中断不一定能够立即生效,可能需要一定的时间才能真正停止线程。
下面是一个使用标志来终止线程的示例代码:
```
public class MyThread implements Runnable {
private volatile boolean stop = false;
@Override
public void run() {
while (!stop) {
// do something
}
}
public void stopThread() {
stop = true;
}
}
```
在主线程中可以调用stopThread()方法来停止MyThread线程的执行。
使用Thread.interrupt()方法的示例代码如下:
```
public class MyThread implements Runnable {
@Override
public void run() {
while (!Thread.interrupted()) {
// do something
}
}
}
```
在主线程中可以调用Thread.interrupt()方法来中断MyThread线程的执行。需要注意的是,interrupt()方法会将线程的中断状态设置为true,但是并不会立即停止线程的执行,线程可以在检查中断状态后自行停止执行。
阅读全文