如何处理线程被中断的异常
时间: 2023-10-20 19:06:00 浏览: 38
当一个线程被中断时,它会抛出 `InterruptedException` 异常。这个异常是一个 checked 异常,因此必须进行处理。
通常的做法是在捕获 `InterruptedException` 异常后,对线程的状态进行处理,例如停止线程或执行其他清理操作。以下是一个处理线程被中断的示例代码:
```java
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
while (!Thread.currentThread().isInterrupted()) {
// 执行某些操作
}
} catch (InterruptedException e) {
// 线程被中断
// 停止线程或执行其他清理操作
}
}
});
// 启动线程
thread.start();
// 中断线程
thread.interrupt();
```
在上面的示例代码中,线程在执行某些操作时会不断地检查自己的中断状态,如果线程被中断,则会抛出 `InterruptedException` 异常。在 `catch` 块中处理异常,可以对线程的状态进行相应的处理。需要注意的是,当线程被中断时,它的中断状态会被清除,因此在 `catch` 块中需要重新设置中断状态,以便其他代码可以检测到线程已经被中断。