j*a interrupt()打断阻塞的操作


interrupt() 不会强制终止线程,而是通过设置中断标志并触发可中断阻塞方法抛出 InterruptedException 来实现协作式中断,仅对 sleep、wait、join、LockSupport.park、NIO Channel 操作等有限阻塞有效,需线程主动检查中断状态或处理异常;传统 IO 阻塞和 synchronized/lock() 无法响应中断,应使用 lockInterruptibly() 或超时机制替代。

java interrupt()打断阻塞的操作

J*a 中 interrupt() 并不能“强制停止”线程,而是给线程打一个中断标记,并在某些阻塞方法中触发 InterruptedException,从而让线程有机会响应并退出。关键在于:**它只对处于可中断阻塞状态(如 sleepwaitjoinLockSupport.park、NIO 的 Channel.read/write 等)的线程生效,且必须由线程自己检查或捕获异常来配合处理。**

哪些阻塞操作会被 interrupt() 打断?

以下常见阻塞调用在被中断时会立即抛出 InterruptedException,并清除当前线程的中断状态(即 isInterrupted() 变为 false):

  • Thread.sleep(millis)
  • Object.wait() / wait(timeout)
  • Thread.join()
  • LockSupport.park()(注意:parkNanos/parkUntil 同样响应中断,但不会抛异常,而是返回,需手动检查 Thread.interrupted()
  • j*a.nio.channels.InterruptibleChannel 相关操作(如 FileChannel.read()SocketChannel.connect() 等)

interrupt() 对普通循环或 IO 流读取(非 NIO)无效

比如以下代码不会因 interrupt() 而退出:

while (!Thread.currentThread().isInterrupted()) {
    // 普通计算或 System.out.println,不涉及可中断阻塞
}

又比如传统 BIO 的 InputStream.read() 是同步阻塞,**不可中断**——调用 interrupt() 不会唤醒它,也不会抛异常,线程会一直卡住,除非数据到达或流关闭。

✅ 正确做法:改用 NIO 的 InterruptibleChannel(如 SocketChannel),或配合超时机制 + 定期检查中断状态。

芦笋演示 芦笋演示

一键出成片的录屏演示软件,专为制作产品演示、教学课程和使用教程而设计。

芦笋演示 227 查看详情 芦笋演示

如何正确响应中断?

不是调用了 interrupt() 就万事大吉,线程需主动配合。典型模式:

  • catch(InterruptedException e) 中,通常应恢复中断状态:Thread.currentThread().interrupt();(尤其在无法直接退出当前方法时)
  • 在循环中,用 Thread.interrupted()(静态方法,会清中断标志)或 isInterrupted()(实例方法,不清除)判断是否该退出
  • 避免“吞掉”中断异常却不做任何处理(例如空 catch)

示例:

while (!Thread.currentThread().isInterrupted()) {
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        Thread.currentThread().interrupt(); // 恢复中断状态
        break; // 或抛出 RuntimeException,让上层处理
    }
    doWork();
}

interrupt() 不会打断 synchronized 或 Lock.lock()

synchronized 关键字进入临界区的过程不可中断;同样,ReentrantLock.lock() 也是不可中断的(会一直阻塞直到获取锁)。若需可中断的锁等待,应使用:

  • ReentrantLock.lockInterruptibly() —— 调用时若被中断,抛 InterruptedException
  • 或用 tryLock(long, TimeUnit) 配合超时和中断检查

基本上就这些。interrupt() 是协作式中断机制,不是暴力终止开关。理解哪些操作可中断、如何响应、以及何时该恢复中断状态,才能写出健壮可取消的并发代码。

以上就是j*a interrupt()打断阻塞的操作的详细内容,更多请关注其它相关文章!


# 不做  # 网站优化公司更可靠吗  # seo项目优化方法  # 揭阳推广营销推荐  # 建立网络营销推广网站  # 崇明区推广网站建设概况  # 酒泉职高网站建设图  # 北京seo公司工作时间  # 有没有专业的网站seo优化  # 优秀教案网站建设总结语  # 流行小说网站建设工作  # 并不能  # java  # 解决问题  # 中文网  # 相关文章  # 并在  # 有机会  # 万事大吉  # 配置文件  # 抛出  # stream  # ai 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: Python定时发送QQ消息  抖音视频如何添加标题?添加标题有哪些好处?  《撕歌》会员开通方法  mysql怎么查询数据_mysql基础查询语句使用教程  服装短视频如何起号推广?服装短视频起号推广有什么要求?  《procreate》绘制渐变效果教程  申通快件单号查询平台 申通包裹物流动态跟踪  KFC邀请码怎么使用领额外优惠_KFC邀请码输入方式与额外优惠代码获取方法  智学网app怎么登录忘记密码_智学网app忘记密码找回与重新登录操作方法  PHP多语言网站的实现:会话管理与翻译函数优化教程  CSS如何使用outline-offset与颜色组合突出元素边框  C++中的explicit关键字有什么作用_C++类型转换控制与explicit使用  发博客与长微博技巧  sublime怎么在文件中显示代码结构大纲_sublime符号列表功能  《单词速记宝》设置学习计划方法  谷歌邮箱官方入口链接 谷歌邮箱网页版电脑端快速登录  快手网页版官方访问 快手网页版页面在线打开  Python类装饰器动态修改方法时的类型提示:Mypy插件实现精确静态分析  composer 提示 "requires ext-soap" 缺少 SOAP 扩展怎么办?  J*aScript与HTML元素交互:图片点击事件与链接处理教程  yy漫画登录页面官方入口_yy漫画在线阅读网址入口  使用jQuery精确检测除指定元素外任意位置的点击事件  MySQL多重JOIN技巧:高效关联同一表获取多角色信息  OTT月报 | 2025年9月智能电视大数据报告  192.168.1.1路由器后台入口 192.168.1.1默认登录入口  Golang如何初始化module项目_Golang module init使用说明  铁路12306入口 铁路12306官网版入口登录网址  解决J*aScript动态图片上传中ID重复问题:在同一页面显示多张独立图片  SQLAlchemy 2.0 与 Pydantic 模型类型安全集成指南  更换小红书群背景怎么换?小红书群规则怎么设置?  微信客户端怎么查看二维码_微信客户端个人二维码查看方法  《三国:谋定天下》平民全阶段通用阵容  《领英》查看屏蔽名单方法  宝妈做视频号该写什么标签话题?宝妈关注的话题有哪些?  《虎扑》取消评分记录方法  传统曲艺莲花落的表演形式是  抖音号显示企业机构号是什么意思?企业机构号申请条件是什么?  汽水音乐在线入口 汽水音乐网页端官方页面快速打开  谷歌学术论文搜索引擎 谷歌学术官网入口论坛永久链接  Coolpad5890 ROM刷机包  word页码灰色不能用如何解决  Yandex浏览器官方入口_Yandex搜索引擎中文版  睡觉时心跳快是什么原因 夜间心悸如何应对  c++如何链接Boost库_c++准标准库的集成与使用  HTML中多图片上传与预览:解决ID冲突的专业指南  如何在CSS中实现盒模型多列间距_grid-gap与padding结合  C++怎么实现一个红黑树_C++高级数据结构与平衡二叉搜索树  知乎APP怎么查看自己被邀请的问题_知乎APP邀请回答记录查看与参与方法  高德地图怎么查看未来行程规划_高德地图未来行程规划查看方法  Firefox OS应用开发:解决XMLHttpRequest跨域请求阻塞问题 

 2025-12-05

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.