interrupt()方法和InterruptException异常,是java专门用来处理线程阻塞的。线程阻塞,就表示要等待一段时间。如果需要等待的时间比较长,正常还没结束之前想中断某个线程的阻塞状态怎么办?这就是靠interrupt()方法来解决了。如果因为一些特殊的原因,想提前中断一些阻塞的线程,以让他们提前解除阻塞状态,然后继续执行下去。只需要在其他线程调用指定线程的interrupt()方法即可(interrupt()方法是线程实例方法),这时候原来阻塞的对应的线程就会抛出InterruptException异常,通过catch捕获异常就可以继续往下面执行了。比如线程方法sleep()和Object的实例方法wait(),都会导致当前线程阻塞,这时候就可以通过interrupt()方法来提前退出阻塞状态。

为什么Interrupt()方法可以提前中断阻塞呢?其实是因为每个线程都会有一个中断状态位,暂且叫做interruptStatus吧。当前执行sleep()和wait()这些方法的时候,当前线程会把该interrruptStatus状态位设置为true,以标识当前线程为阻塞状态。当调用该线程的Interrupt()方法的话,就会重置interruptStatus状态为为false。而sleep()和wait()方法内部会不断地轮询检查InterruptStatus状态值,如果某一时刻变为false的时候,当前线程就会中断阻塞状态,通过抛出InterrupException的方式来中断阻塞状态,然后继续执行下去。

interrupt()方法和InterruptException异常相关推荐

  1. 【高并发】又一个朋友面试栽在了Thread类的stop()方法和interrupt()方法上!

    来自:冰河技术 写在前面 新一轮的面试已经过去,可能是疫情的原因吧,很多童鞋纷纷留言说今年的面试题难度又提高了,尤其是对并发编程的知识.我细想了下,也许有那么点疫情的原因吧,但无论面试的套路怎么变,只 ...

  2. 据说有人面试栽在了Thread类的stop()方法和interrupt()方法上

    摘要:今天就简单的说说Thread类的stop()方法和interrupt()方法到底有啥区别. 本文分享自华为云社区<[高并发]又一个朋友面试栽在了Thread类的stop()方法和inter ...

  3. 请简述一下线程的sleep()方法和yield()方法的区别?

    请简述一下线程的sleep()方法和yield()方法的区别? ①sleep()方法给其他线程机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会. yield()方法只会给相同优先级或更高优 ...

  4. 面向对象回顾(构造函数、覆盖和重载、Query接口的list方法和iterate方法、面向对象的六原则一法则、反射、内部类)

    1. 什么是构造函数?什么是构造函数重载?什么是复制构造函数? 当新对象被创建的时候,构造函数会被调用. 每一个类都有构造函数. 在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个 ...

  5. [深入学习C#]LINQ查询表达式详解(1)——基本语法、使用扩展方法和Lambda表达式简化LINQ查询

    此文章非原创,转载自诗人江湖老,原文地址 在Git上下载源码 在工程中我们少不了要定义类或者结构去储存数据,这些数据将被临时地储存在内存中,现在我们想要对其完成一些类似于查找.过滤等等常见的任务的时候 ...

  6. hibernate中get方法和load方法的根本区别

    hibernate中get方法和load方法的根本区别 如果你使用load方法,hibernate认为该id对应的对象(数据库记录)在数据库中是一定存在的,所以它可以放心的使用,它可以放心的使用代理来 ...

  7. 【转】Collections的copy()方法和ArrayList的大小问题

    Collections的copy()方法和ArrayList的大小问题 偶然看到了Collections的copy(List desc,List src)方法.当时就想这个方法和初始化一个List d ...

  8. [转载] python 字符串查找的4个方法和count函数

    参考链接: Python字符串 count 方法 python 字符串查找的4个方法和count函数 所谓的字符串查找方法就是查找子串在字符串中的位置和出现的次数 python 字符串查找有4个方法, ...

  9. PIL库中Image类thumbnail方法和resize方法区别

    from PIL import Image   im=Image.open("C:\\Users\\kethur\\Desktop\\a.jpg") x,y=im.size pri ...

最新文章

  1. VS中C#读取app.config数据库配置字符串的三种方法(转)
  2. 一个Solidity源文件的布局
  3. 为什么大家看到不错的文章更愿意收藏而不是点赞?
  4. python3精要(21)-函数(2)
  5. python 动态属性
  6. codeforces gym-101741 Subsequence Sum Queries 分治+离线
  7. 最全面的理解 | 工业互联网的前世今生
  8. Atitit data fmt sumup 常用的数据交换格式 标准 目录 1. 分类标准 2 1.1. 按照结构化与非结构化分类 2 1.2. 按照资料性质分类常见的数据格式txt ,do
  9. Java学习笔记 --- IDEA
  10. acrobat dc mac版_Adobe Acrobat Pro DC mac版-Adobe Acrobat Pro DC for Macv2019.021.20048 免费版__西西软件下载...
  11. 非常有价值的JAVA开源项目
  12. linux stm32 虚拟串口驱动安装,stm32usb虚拟串口驱动
  13. matlab sa函数的傅里叶变换,通信第三章常见函数的傅里叶变换.ppt
  14. 怎么在Excel里输入可以打钩的选择框?
  15. 高中信息技术新课程标准
  16. c盘中的软件怎么转到D盘,将c盘软件转移到d盘
  17. [转]VC知识库文章 - 在MFC中用正则表达式对窗体进行有效性验证
  18. re模块与正则表达式 1
  19. 【10-11】PR调色+多机位剪辑
  20. 【51单片机学习】PWM电机调速

热门文章

  1. 鸿蒙战略看点,鸿蒙OS四大看点详解!华为的雄心不止手机,而是“一统江湖”...
  2. 致1024程序员节--多年前,我用代码赚到的第一桶金
  3. Odoo 模型、py字段属性、view字段属性使用
  4. VBA中的数据类型转换
  5. 用App Inventor 2 WxBit 汉化增强版快速制作安卓app
  6. c语言recive的用法,receive的用法总结大全
  7. Oracle EBS 资产重分类API fa_reclass_pub.do_reclass报错
  8. 锤子不讲情怀傍风口?扯AI虎皮就能值10亿?
  9. 朱新礼:我为什么要卖掉汇源
  10. python +opencv 根据图片定位进行UI自动化