在 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 面试突击训练营》,这门课程是有着十几年工作经验(前 360 开发工程师),10 年面试官经验的我,花费 4 年时间打磨完成的一门视频面试课。学完训练营的课程之后,基本可以应对目前市面上绝大部分公司的面试了,并且课程配备了 9 大就业服务,帮助上千人找到 Java 工作,其中上百人拿到大厂 Offer,学员最高薪资 70W 年薪,面试课目录和 9 大服务如下:

加我微信咨询:vipStone【备注:训练营】