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

实用指南:疑难bug之正确处理InterruptedException

目录

问题出自:

java中断原理:

解决方法:


问题出自:

在rabbitmq 的消费者处理消息体,捕获中断异常同时重新进行中断,导致消费线程停止。

我们业务代码中有中断响应,通过catch捕获了这种中断,简单按照sonar扫描给出的建议调用Thread.currentThread().interrupt();结果直接给消费线程停止了。

catch (InterruptedException e) {log.error("busi error:{}", e.getMessage(), e);//业务异常,无法重试,不重新入队列channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, false);//Thread.currentThread().interrupt();会导致消费端无法正常消费
}

Thread.currentThread().interrupt(); 方法重新进行了中断即消费线程中断标记为true,导致rabbitmq的当前消费线程停止不再处理消息。

java中断原理:

  • java中断响应是描述当一个线程或方法A处于运行、阻塞或死锁状态时,外界(通常指其他线程、系统IO等)对A的影响能否让A线程或者方法抛出InterruptedException异常并提前返回,如果会提前返回并且抛出InterruptedException,就叫可中断响应途径或线程,要是不会抛出InterruptedException,就叫不可中断线程或方法。

  • 每个线程都有一个与线程是否已中断的相关联的 Boolean 属性,用于表示线程的中断状态(interrupted status)。中断状态初始时为 fals
http://www.rkmt.cn/news/13091.html

相关文章:

  • GNSS精度判断和协方差矩阵 - MKT
  • Insightly模板页面存储型XSS漏洞分析与复现
  • CF2065D Skibidus and Sigma
  • 微信二次开发个人号api
  • 深入解析:神经网络二分类任务详解:前向传播与反向传播的数学计算
  • 关于Leetcode 812题的简单思考
  • Python 潮流周刊#121:工程师如何做出高效决策?
  • 【远程桌面】运维强推设备之远程控制软件RustDesk 1.4.1 全面指南:开源远程桌面的终极解决方案
  • 第六篇
  • 6378:删除数组中的元素(链表)
  • 详解 Kubernetes 命令:kubectl exec -it nginx -- bash 及实战场景 - 教程
  • 【08】海康相机C#开发——在海康MVS的**C#实例中添加控件报错**“`不能在本地化模式下添加组件。在 Language 属性中选择”(默认)”以返回到默认格式,然后添加组件`” - 实践
  • # Windows CMD 基本指令参考手册
  • P13019 [GESP202506 八级] 树上旅行
  • 完整教程:负载均衡式的在线OJ项目编写(二)
  • 记录这辈子见到的第一道从上到下的树上倍增
  • 06.容器存储 - 教程
  • 深入解析:【Linux】进程概念(六):进程地址空间深度解析:虚拟地址与内存管理的奥秘
  • 深入解析:Metal - 5.深入剖析 3D 变换
  • 油猴脚本(tampermonkey)离线安装文件下载,带油猴(tampermonkey)插件清单
  • 详细介绍:【汽车篇】基于深度学习的2D+3D整车漆面外观缺陷检测
  • 深入解析:网线传输距离限制 | 理论基础 / 实际应用 | 双绞线分类与特性 / 水晶头制作
  • 2025年试验机品牌权威推荐榜:聚焦 TOP5 专精特新企业,疲劳试验机,压力试验机,液压万能试验机等设备技术实力与口碑解析!
  • [2025.9.27鲜花] 私たちもう一生 分かり合えないと 分かっていたでしょう
  • 2025年岗亭厂家最新权威推荐榜:内蒙古门卫室岗亭,售货岗亭,值班岗亭,保安岗亭,低噪声岗亭选购指南
  • SPI和普通设计模式区别
  • 混元开源之力:spring-ai-hunyuan 项目功能升级与实战体验 - 指南
  • 【题解】P13345 [EGOI 2025] IMO
  • 详细介绍:Python高效合并Excel多Sheet工作表,告别繁琐手动操作
  • Python爬虫的实现流程