在 Java 中,interrupt()
方法是一个线程中断机制,用于请求中断线程的执行。它不会直接终止线程,而是通过设置线程的中断状态来通知线程应该中断当前的操作。线程是否响应中断以及如何响应,取决于线程的实现逻辑。
以下是调用 interrupt()
方法后可能发生的情况:
1. 线程正在执行阻塞操作
如果线程正在执行某些阻塞操作(如 Thread.sleep()
、Object.wait()
、BlockingQueue.take()
等),调用 interrupt()
方法会导致以下行为:
-
抛出
InterruptedException
:阻塞操作会抛出InterruptedException
,并清除线程的中断状态(即中断标志被置为false
)。 -
线程退出阻塞状态:线程会从阻塞状态中退出,继续执行
catch
块中的代码(如果有的话)。
示例代码:
java复制
Thread thread = new Thread(() -> {
try {
Thread.sleep(10000); // 阻塞操作
System.out.println("Sleep completed");
} catch (InterruptedExce