MST

星途 面试题库

面试题:Java中如何在Worker线程中维护中断状态并解释其基本意义

在Java中,编写一段代码展示Worker线程如何维护中断状态,并简要阐述维护该中断状态对于线程控制和程序逻辑的基本意义。
40.6万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

代码示例

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();
    }
}

中断状态维护的意义

  1. 线程控制:通过维护中断状态,主线程可以对工作线程进行外部控制。例如,在需要停止工作线程时,主线程调用interrupt()方法,工作线程通过检查中断状态或捕获InterruptedException异常来决定是否终止任务或进行一些清理操作,使得线程的生命周期可以被更灵活地管理。
  2. 程序逻辑:在复杂的程序逻辑中,中断状态提供了一种优雅的线程间通信方式。工作线程可以根据中断状态来决定是否提前结束一些耗时操作,避免资源浪费或出现数据不一致等问题。同时,在捕获中断异常时重新设置中断状态,使得上层调用者也能够感知到该线程曾被中断,从而做出更合适的处理,保证程序整体逻辑的完整性和健壮性。