尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
并发理论:InterruptedException有啥用?
InterruptedException异常是如何来的InterruptedException中断异常是 Java 多线程编程中最常见的检查型异常之一当线程处于WAITING和TIMED_WAITING状态时如果其他线程调用了该线程的interrupt()方法会抛出InterruptedException阻塞的方法就会立即抛出 InterruptedException并提前结束阻塞ObjectlocknewObject();Threadthread1newThread(()-{synchronized(lock){try{lock.wait();}catch(InterruptedExceptione){// 在这里抛出 InterruptedExceptione.printStackTrace();}}});thread1.start();newThread(()-{thread1.interrupt();}).start();中断状态标志每个线程都有一个内部的布尔标志用于表示其中断状态如果目标线程正处在如下阻塞方法中它会立即清除中断状态并抛出这个异常Thread.sleep(long millis)线程休眠。Object.wait()等待获取对象锁通知。Thread.join()等待另一个线程执行完毕。并发容器的阻塞操作如 BlockingQueue.take()、BlockingQueue.put() 等。显式锁的中断响应如 ReentrantLock.lockInterruptibly()如果目标线程没有在阻塞中interrupt() 仅会将其中断状态设为 true。线程可以通过轮询 Thread.interrupted() 或 Thread.isInterrupted() 方法来检查这个标志并自行决定如何响应Thread类提供了如下2个方法来判断线程是否是中断状态isInterrupted()interrupted()这2个方法虽然都能判断状态但是有细微的差别TestpublicvoidtestInterrupt()throwsInterruptedException{ThreadthreadnewThread(()-{while(true){}});thread.start();TimeUnit.MICROSECONDS.sleep(100);thread.interrupt();// trueSystem.out.println(thread.isInterrupted());// trueSystem.out.println(thread.isInterrupted());// trueSystem.out.println(thread.isInterrupted());}TestpublicvoidtestInterrupt2(){Thread.currentThread().interrupt();// trueSystem.out.println(Thread.interrupted());// falseSystem.out.println(Thread.interrupted());// falseSystem.out.println(Thread.interrupted());}isInterrupted和interrupted的方法区别如下Thread#isInterrupted测试线程是否是中断状态执行后不更改中断状态Thread#interrupted测试线程是否是中断状态执行后将中断标志更改为falseAQS中就有类似的逻辑publicfinalvoidacquireInterruptibly(intarg)throwsInterruptedException{// 1. 前置中断检查若调用前线程已被中断直接抛出异常if(Thread.interrupted())thrownewInterruptedException();// 2. 尝试获取资源由子类实现如 ReentrantLockif(!tryAcquire(arg))// 3. 获取失败入队阻塞且在阻塞期间【强响应中断】doAcquireInterruptibly(arg);}InterruptedException有啥用InterruptedException 的核心设计作用可以概括为一句话为 Java 多线程提供一种“安全、可控、协作式”的取消与停止机制解决强制终止线程的安全隐患在早期 JavaJDK 1.0中Thread.stop() 可以强制直接杀死一个线程。但这带来了严重的系统风险为了解决这个问题Java 废弃了 Thread.stop()转而设计了以 InterruptedException 为核心的协作式中断机制外部只能发出“请停下来”的请求由线程自己决定何时、如何安全地释放资源并退出可以及时打断阻塞状态如果没有中断机制线程将无法感知外部的停止指令会一直卡在阻塞调用处直到等待超时或自然唤醒。这会导致线程池无法关闭、系统响应变慢甚至卡死
RELATED

相关推荐

AudioLazy实战案例:基于DFT的实时 pitch检测系统

AudioLazy实战案例:基于DFT的实时 pitch检测系统

AudioLazy实战案例:基于DFT的实时 pitch检测系统 【免费下载链接】audiolazy Expressive Digital Signal Processing (DSP) package for Python 项目地址: https://gitcode.com/gh_mirrors/au/audiolazy AudioLazy是一个功能强大的Python数字信号处理&#x…

📅 2026/10/6 4:45:31
【 办公类-03】20220220 VS Python 大8班“运动场地”的周次安排。

【 办公类-03】20220220 VS Python 大8班“运动场地”的周次安排。

办公需求: 开学了,周计划教案的模板又要调整了。其中“分散活动”的内容需要按一定排序规律,每周填入不同的场地。 为了避免每个班级每天用的场地产生重复,组长制定了场地安排规则。 以大八班为例, 1.第1周(周一到周五)的场地: “8号对战投投乐”“”1号场地山洞大冒险…

📅 2026/10/6 5:35:04
深入解析μDMA:嵌入式系统数据搬运性能优化的核心技术

深入解析μDMA:嵌入式系统数据搬运性能优化的核心技术

1. 项目概述在嵌入式系统开发中,尤其是面对实时数据采集、高速通信或图形处理等场景时,一个核心的瓶颈往往不是处理器的计算能力,而是数据搬运的效率。想象一下,你的微控制器(MCU)正在全速处理一个复杂的算…

📅 2026/9/16 19:43:22
MORE NEWS

更多资讯

📰

内部消息:房屋电工证查询全攻略,实操考试怕挂科的看这篇

内部消息:房屋电工证查询全攻略,实操考试怕挂科的看这篇 实操考试心里没底怕挂科?别慌,这篇文章帮你摸清房屋电工证查询的每一个流程,还有 内部消息 带你避坑,稳稳拿证不是梦! 房屋电工证到底值不值?别被忽悠了…

📰

兰州哪里考建筑电工证怎么报名?别被中介坑了,看这篇就够了

兰州哪里考建筑电工证怎么报名?别被中介坑了,看这篇就够了 不知道去哪报名怕被中介坑,这几乎是每个想考建筑电工证的施工人员最头疼的问题。尤其在兰州这样的城市,报考渠道繁杂,信息不对称,很多人一不小心就被中介骗了钱还拿不到证。别担心,这篇文章就…

📰

常宁电工证复审流程怎么走?网上查询一步到位别再踩坑

常宁电工证复审流程怎么走?网上查询一步到位别再踩坑 怕考不过白交培训费?常宁电工证复审流程其实并不复杂,关键是你得走对路。网上查询不仅能帮你确认流程,还能提前避免不必要的麻烦。今天就从零开始,带你一步步搞懂这个流程,别再被那些培训机构忽悠了…

📰

电工证可以造假吗现在 2026河南最新政策下如何顺利拿到证

电工证可以造假吗现在 2026河南最新政策下如何顺利拿到证 你现在急需电工证才能上岗找工作,可你发现市面上有些人打着“快速拿证”的旗号,声称能“代办”“代考”甚至“造假”电工证。你是不是也被这些“捷径”忽悠得动摇了?2026年河南最新政策已…

📰

电工证四川怎么网上查询和复审延期?老电工教你避坑

电工证四川怎么网上查询和复审延期?老电工教你避坑 证书过期了不知道怎么复审延期?你不是一个人,四川很多电工朋友都遇到过这种情况。特别是像我们这种常年在外打工的劳务班组负责人,手里管着十几个工人,一旦有人证书到期了,不光影响工程进度,还可能被…

📰

平度学习电工证怎么考?考前押题助你一次性通过

平度学习电工证怎么考?考前押题助你一次性通过 你缺一张特种作业证,正愁找不到工作?别急,平度学习电工证考前押题已经帮你把关好了。今天就给你讲讲,从报名到考试,怎么一步步拿下电工证,别再因为证件问题耽误你的前程。…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬