当前位置: 首页 > news >正文

Java捕获InterruptedException异常后,会自动清空中断状态

InterruptedException异常一般是在一个线程处于等待(像Thread.sleep()Object.wait()Thread.join()等方法)状态时被另一个线程调用interrupt()方法中断而抛出的。一旦捕获到InterruptedException,Java 会自动清除该线程的中断状态。

以下代码可以说明这一点:

public class InterruptedExceptionExample {public static void main(String[] args) {Thread thread = new Thread(() -> {try {System.out.println("线程开始睡眠");// 让线程睡眠Thread.sleep(5000); } catch (InterruptedException e) {System.out.println("线程被中断,捕获到 InterruptedException");// 检查中断状态System.out.println("捕获异常后中断状态: " + Thread.currentThread().isInterrupted()); // falseThread.currentThread().interrupt(); // 重新设置中断(恢复中断)System.out.println(Thread.currentThread().isInterrupted()); // true}});thread.start();// 主线程睡眠 1 秒后中断子线程try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}// 中断线程thread.interrupt(); }
}

在上述代码中,子线程开始睡眠 5 秒,主线程睡眠 1 秒后中断子线程。子线程捕获到InterruptedException异常,然后输出捕获异常后的中断状态。由于 Java 会自动清除中断状态,所以输出的中断状态为false,此时线程可以重新响应中断。

总的来说,当捕获InterruptedException异常时,线程的中断状态会被自动清除,这是 Java 处理线程中断的一种机制。

相关文章:

  • 卷积神经网络实战(2)
  • [ML]通过50个Python案例了解深度学习和神经网络
  • VulnHub-OSCP靶机
  • 【神经网络与深度学习】生成模型-单位高斯分布 Generating Models-unit Gaussian distribution
  • 超详细讲解C语言转义字符\a \b \r \t \? \n等等
  • 单调栈与单调队列(c艹)、可视化Qt?
  • Android第三次面试总结之网络篇补充
  • 使用 Hugging Face 镜像站快速下载大模型
  • emplace_back和push_back
  • 五、shell脚本--函数与脚本结构:搭积木,让脚本更有条理
  • Vultr之Ubuntu重设密码
  • 解决在 Linux 中 WPS 字体缺失问题
  • KAG:通过知识增强生成提升专业领域的大型语言模型(三)
  • 有关水下图像增强的论文
  • [特殊字符] 专业角度深入讲解:大模型备案(生成式人工智能)
  • RuntimeError: CUDA error: __global__ function call is not configured
  • 计算机图形学中的深度学习
  • 2025年- H25-Lc133- 104. 二叉树的最大深度(树)---java版
  • [计算机网络]拓扑结构
  • 单片机自动排列上料控制程序
  • 习近平对贵州毕节市黔西市游船倾覆事故作出重要指示
  • “五一”假期客流增加,多地提升铁路运力并强化服务
  • 金正恩视察重要坦克厂并强调更迭陆军装备
  • 安徽六安特色产品将“组团”入沪,借力五五购物节开拓市场
  • “三桶油”一季度净赚966亿元:业绩分化加剧,有人欢喜有人愁
  • 武汉大学新闻与传播学院已由“80后”副院长吴世文主持工作