当前位置: 首页 > 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 处理线程中断的一种机制。

http://www.xdnf.cn/news/272917.html

相关文章:

  • idea创建springboot工程-指定阿里云地址创建工程报错
  • QT数据库实验
  • Electron 从零开始:构建你的第一个桌面应用
  • Qt帮助文档框架
  • Qt .pro配置msvc相关命令(二)
  • GPU集群训练经验评估框架:运营经理经验分析篇
  • 修复笔记:SkyReels-V2 项目中的 torch.load 警告
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】4.2 数据类型转换(CAST函数/自定义函数)
  • Qwen2.5模型性能测评 - 速度指标
  • 【LeetCode Hot100】动态规划篇
  • 记录ruoyi-flowable-plus第一次运行流程报错
  • 编程速递-RAD Studio 12.3 Athens四月补丁:关注软件性能的开发者,安装此补丁十分必要
  • 【Linux】日志与策略模式、线程池
  • 《Vue3学习手记8》
  • 高等数学第三章---微分中值定理与导数的应用(3.4~3.5)
  • LeetCode 热题 100 994. 腐烂的橘子
  • CF1000E We Need More Bosses
  • 【转载】【翻译】图解智能体到智能体 (A2A) 协议
  • 冯诺依曼结构与哈佛架构深度解析
  • 【Linux系统】第二节—基础指令(2)
  • 13:图像处理—畸变矫正详解
  • 修复笔记:获取 torch._dynamo 的详细日志信息
  • 【数据结构】励志大厂版·初阶(复习+刷题)排序
  • 【程序+论文】大规模新能源并网下的火电机组深度调峰经济调度
  • TFQMR和BiCGStab方法比较
  • 缓存与数据库的高效读写流程解析
  • 8.1 Python+Docker+企业微信集成实战:自动化报告生成与CI/CD部署全攻略
  • php study 网站出现404 - Page Not Found 未找到
  • 去打印店怎么打印手机文件,网上打印平台怎么打印
  • C++负载均衡远程调用学习之Agent代理模块基础构建