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