在 Java 中,可以通过调用线程的 interrupt() 方法来中止线程。但是,这并不意味着线程会立即停止执行,它只是设置了一个中断标志,线程可以通过检查这个标志来自行终止。 具体来说,当线程被中断时,可以通过以下方式来检查中断标志:
- 调用 Thread.currentThread().isInterrupted() 方法检查当前线程是否被中断。
- 调用 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、从实际开发问题到场景题应有尽有,如下图所示:
![](/image/camp.png)
全程通过视频直播 + 录播的方式,把 Java 常见的面试题系统的过一遍,遇到一个问题,把这个问题相关的内容都给大家讲明白,并且视频支持永久更新和观看。
上完训练营的课程之后,基本可以应对目前市面上绝大部分公司的面试了,想要了解详情,加我微信:vipStone【备注:训练营】
![](/image/weixin-2.png)