代码示例
public class Worker implements Runnable {
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
// 线程执行的任务
System.out.println("Worker thread is running...");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// 捕获到中断异常时,重新设置中断状态
Thread.currentThread().interrupt();
System.out.println("Worker thread was interrupted, re - setting interrupt status.");
}
}
System.out.println("Worker thread stopped.");
}
public static void main(String[] args) {
Thread workerThread = new Thread(new Worker());
workerThread.start();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
workerThread.interrupt();
}
}
中断状态维护的意义
- 线程控制:通过维护中断状态,主线程可以对工作线程进行外部控制。例如,在需要停止工作线程时,主线程调用
interrupt()
方法,工作线程通过检查中断状态或捕获InterruptedException
异常来决定是否终止任务或进行一些清理操作,使得线程的生命周期可以被更灵活地管理。
- 程序逻辑:在复杂的程序逻辑中,中断状态提供了一种优雅的线程间通信方式。工作线程可以根据中断状态来决定是否提前结束一些耗时操作,避免资源浪费或出现数据不一致等问题。同时,在捕获中断异常时重新设置中断状态,使得上层调用者也能够感知到该线程曾被中断,从而做出更合适的处理,保证程序整体逻辑的完整性和健壮性。