通过线程ID结束线程
时间: 2023-06-28 21:04:25 浏览: 139
线程终止问题
可以通过调用线程的 `interrupt()` 方法来结束线程。这个方法会向目标线程发送一个中断信号,如果目标线程正在等待 I/O 或者阻塞状态,那么它会被唤醒并抛出一个 `InterruptedException` 异常。我们可以在目标线程的 `run()` 方法中通过检查 `Thread.currentThread().isInterrupted()` 来判断是否接收到了中断信号,如果接收到了就可以结束线程的执行。
下面是一个简单的示例代码:
```
public class MyThread extends Thread {
public void run() {
while (!Thread.currentThread().isInterrupted()) {
// do something ...
}
System.out.println("Thread interrupted!");
}
}
// 在其他线程中调用 interrupt() 方法来结束 MyThread 线程
MyThread thread = new MyThread();
thread.start();
// ...
thread.interrupt();
```
需要注意的是,中断信号不一定能够立即终止线程的执行,因为线程可能会处于某种阻塞状态。此外,中断信号也不是强制性的,线程可以选择忽略它。因此,在结束线程之前,我们最好先对线程的状态进行检查,并确保它能够正常地退出。
阅读全文