java如何捕获InterruptedException错误
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,小编给大家分享一下java如何捕获InterruptedException错误,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧
千家信息网最后更新 2025年11月14日java如何捕获InterruptedException错误
小编给大家分享一下java如何捕获InterruptedException错误,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
捕获InterruptedException错误
请检查下面的代码片段:
public class Task implements Runnable { private final BlockingQueue queue = ...; @Override public void run() { while (!Thread.currentThread().isInterrupted()) { String result = getOrDefault(() -> queue.poll(1L, TimeUnit.MINUTES), "default"); //do smth with the result } } T getOrDefault(Callable supplier, T defaultValue) { try { return supplier.call(); } catch (Exception e) { logger.error("Got exception while retrieving value.", e); return defaultValue; } }}代码的问题是,在等待队列中的新元素时,是不可能终止线程的,因为中断的标志永远不会被恢复:
1.运行代码的线程被中断。
2.BlockingQueue # poll()方法抛出InterruptedException异常,并清除了中断的标志。
3.while中的循环条件 (!Thread.currentThread().isInterrupted())的判断是true,因为标记已被清除。
为了防止这种行为,当一个方法被显式抛出(通过声明抛出InterruptedException)或隐式抛出(通过声明/抛出一个原始异常)时,总是捕获InterruptedException异常,并恢复中断的标志。
T getOrDefault(Callable supplier, T defaultValue) { try { return supplier.call(); } catch (InterruptedException e) { logger.error("Got interrupted while retrieving value.", e); Thread.currentThread().interrupt(); return defaultValue; } catch (Exception e) { logger.error("Got exception while retrieving value.", e); return defaultValue; }}以上是"java如何捕获InterruptedException错误"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
错误
代码
标志
篇文章
内容
方法
线程
原始
不怎么
元素
大部分
更多
条件
标记
片段
知识
行业
行为
资讯
资讯频道
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库sql至少
易语言服务器和e4a客户端源码
智能设备使用与网络安全
蒙古国ip动态服务器国内兼容
怎么存放数据库才更好
数据库数据加密的定义
数据库完全技术
软件开发课题背景
高端定制软件开发
交通软件开发流程
服务器数据异地备份距离要求
湖南智能软件开发价格表格
重庆软件开发定制收费多少
软件开发几大规范
网络安全的预防PPT图片
重庆中礼互联网科技有限公司
九江市软件开发公司
网络安全认证评估
华为公有云服务器搭建
酒店网络安全监控
网络安全专业有必要开设吗
国家网络安全局局长
广东东莞互联网科技公司
加入我们 软件开发
ie打印无服务器
网络安全信息收集
政府网络安全保障方案
数据库provider
sql数据库服务器管理器
软件开发实训日志