在 Java 中,可以通过调用线程的 interrupt() 方法来中止线程。但是,这并不意味着线程会立即停止执行,它只是设置了一个中断标志,线程可以通过检查这个标志来自行终止。 具体来说,当线程被中断时,可以通过以下方式来检查中断标志:

  1. 调用 Thread.currentThread().isInterrupted() 方法检查当前线程是否被中断。
  2. 调用 Thread.interrupted() 方法检查当前线程是否被中断,并清除中断状态。

在实际应用中,如果需要中止一个线程,可以在执行任务的循环中检查中断标志,如果中断标志被设置,则退出循环,从而中止线程的执行。

下面是一个简单的示例代码,演示如何使用中断标志来中止线程:

public class MyRunnable implements Runnable {
    @Override
    public void run() {
        try {
            // 判断线程是否中止
            while (!Thread.currentThread().isInterrupted()) {
                // 执行任务
            }
        } catch (InterruptedException e) {
            // 处理异常
        } finally {
            // 执行清理操作
        }
    }
}
public class Main {
    public static void main(String[] args) {
        Thread t = new Thread(new MyRunnable());
        t.start();
        
        // 中止线程
        t.interrupt();
    }
}

在上面的示例代码中,MyRunnable 类实现了 Runnable 接口,重写了 run() 方法,在方法中使用了中断标志来控制循环的执行。在 Main 类中,创建了一个 MyRunnable 对象,并通过 Thread 类将其封装成一个线程。然后,通过调用 interrupt() 方法来中止线程的执行。在 MyRunnable 类的 run() 方法中,检查了线程的中断状态,并在中断状态被设置时退出了循环,从而中止了线程的执行。


以上内容来自我的 《Java 面试突击训练营》,这门课程是 有着 14 年工作经验(前 360 开发工程师),9 年面试官经验的我,花费 4 年时间打磨完成的一门视频面试课

整个课程从 Java 基础到微服务 Spring Cloud、从实际开发问题到场景题应有尽有,如下图所示:

全程通过视频直播 + 录播的方式,把 Java 常见的面试题系统的过一遍,遇到一个问题,把这个问题相关的内容都给大家讲明白,并且视频支持永久更新和观看。

上完训练营的课程之后,基本可以应对目前市面上绝大部分公司的面试了,想要了解详情,加我微信:vipStone【备注:训练营】