一、概念

java中线程有开始,运行(就绪,运行),阻塞,等待,终止这几种状态。其中在等待的时候可以通过设置中断标志位来唤醒线程。一般情况下等待状态的线程检查到中断标志被置位,则会抛出InterruptedException异常,捕获异常,复位中断标志,可以使线程继续运行。

thread.interrupt()  设置中断标识位

Thread.interrupt() 回复中断标识位

thread.isInterrupted()  返回中断标识位

什么情况下可以使用Interrunpt

(1)如果线程在调用 Object 类的 wait()、wait(long) 或 wait(long, int) 方法,或者该类的 join()、join(long)、join(long, int)、sleep(long) 或 sleep(long, int) 方法过程中受阻,则其中断状态将被清除,它还将收到一个InterruptedException异常。这个时候,我们可以通过捕获InterruptedException异常来终止线程的执行,具体可以通过return等退出或改变共享变量的值使其退出。

(2)如果该线程在可中断的通道上的 I/O 操作中受阻,则该通道将被关闭,该线程的中断状态将被设置并且该线程将收到一个 ClosedByInterruptException。这时候处理方法一样,只是捕获的异常不一样而已。

二、代码

public static void main(String[] args) {

Thread thread = new Thread(new Runnable() {

@Override

public void run() {

try {

TimeUnit.SECONDS.sleep(1000);

} catch (InterruptedException e) {

System.out.println(e.getStackTrace());

System.out.println("thread is interrupt ? >>> " + Thread.currentThread().isInterrupted());

Thread.currentThread().interrupt();

System.out.println("thread is interrupt ? >>> " + Thread.currentThread().isInterrupted());

}

}

});

thread.start();

try {

TimeUnit.SECONDS.sleep(5);

} catch (InterruptedException e) {

}

thread.interrupt();

}

输出结果:

[Ljava.lang.StackTraceElement;@1e0c386d

thread is interrupt ? >>> false

thread is interrupt ? >>> true

interrupt java_关于java中的interrupt相关推荐

  1. interupt java_基于JDK8总结java中的interrupt

    1. interrupt知识点 以下总结基于JDK8 本文不会完整说明interrupt,只会罗列一些比较重要的点.完整了解Thread.interrupt可以看参考资料. 以下的一些理解新的有助于理 ...

  2. cloning java_深入浅出Java中的clone克隆方法,写得太棒了!

    作者:张纪刚 blog.csdn.net/zhangjg_blog/article/details/18369201/ 2019-03-24 10:33:04 Java中对象的创建 clone 顾名思 ...

  3. 遮掩java_关于java中的覆写、重载、隐藏、遮掩、遮蔽

    最近在重新学习java,发现了以前未发现的几个概念,从网上搜索了一些资料,现在整理下.对于我来说,以前只是知道java中的覆写 重载和隐藏,这次却发现还有遮掩和遮蔽这两个概念.下面是整理的一篇文章. ...

  4. 形式参数内存在哪java_深入浅出Java中JVM内存管理

    原标题:深入浅出Java中JVM内存管理 Java岗位面试,JVM是对程序员基本功考察,通常会问你对JVM了解吗?可以分几部分回答这个问题,首先JVM内存划分 | JVM垃圾回收的含义 | 有哪些GC ...

  5. groovy import java_在Java中调用Groovy方法的又一种方法:使用接口

    1.定义Java接口包含在Java中需要调用的Groovy方法 public interface IFoo { public Object run(Object foo); } 2.创建Groovy类 ...

  6. atomic java_在Java中添加@atomic操作

    atomic java 总览 原子操作如何在Java中工作,OpenJDK / Hotspot中是否存在可以转换为原子的当前替代方法. 反馈 在我以前的文章中, 对可变字段进行原子操作. 有几次指出, ...

  7. tlab java_浅析java中的TLAB

    好久,好久....没有更博客了.这一次利用闲暇时间,来扯一下关于JVM中的TLAB. 什么是TLAB?它是干什么的?咋们先抛开这个问题,一切的开始得从new对象到指针碰撞开始讲起. new对象与指针碰 ...

  8. throws java_基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

  9. 图解java_图解 Java 中的数据结构及原理!

    作者:大道方圆 cnblogs.com/xdecode/p/9321848.html 最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程. 主要基于 ...

最新文章

  1. 4行指令解决pip下载Python第三方库太慢问题(pip更换国内下载源)
  2. 专家点评Nature Plants | 中科院微生物所郭惠珊研究组揭示土传病原菌逃避寄主免疫的新机制...
  3. Python—sqlalchemy
  4. 键盘 Input子系统
  5. kingwell Calendar V1.0 日历时间组件
  6. [Python]网络爬虫(五):urllib2的使用细节与抓站技巧
  7. 新加坡建设绿色高层数据中心的构想有所争议
  8. h3c s7506e 配置手册_H3C交换机s5500Web登录配置
  9. (需求实战_进阶_05)SSM集成RabbitMQ 通配符模式 关键代码讲解、开发、测试
  10. 输入你的密码来连接到_手机怎样连接WiFi?详细步骤,教你操作
  11. php钩子是啥意思,thinkphp钩子是什么意思
  12. LAMP+Varnish缓存详解(一)——Varnish简介
  13. java英语流利_day186-2018-12-23-英语流利阅读-待学习
  14. 微软2015校园招聘 技术类职位在线笔试-题目1 : Browser Caching
  15. RGMII_PHY测试笔记1 基于开发板MiS603-X25
  16. 一个程序员绝对真实的生活感悟
  17. Mac配置/关闭代理命令
  18. 各大自媒体平台的收益情况汇总
  19. 测试人生 | 疫情之下工资翻了2倍多,这4个月学习比工作8年学到的还多
  20. 商标变更的流程介绍有哪些

热门文章

  1. 北京理工大学计算机学院研究生孙灿,王国仁_北京理工大学计算机学院
  2. oracle rename 失败,Oracle Rename表
  3. 【使用EasyExcel导入导出】
  4. U盘为RAW格式无法格式化问题解决办法
  5. mybatis多租户实现
  6. 基于JAVA的盛卖手机销售网站的设计
  7. c语言数组求欧几里得距离,如何计算由包含x,y的矩阵定义的两点之间的欧几里得距离?...
  8. 刚刚安装的ubuntu 20.04.1连接不上网络
  9. 浅谈linux的几种重启命令,linux用命令重启的两种方法(Linux重启关机命令经验之谈)...
  10. saltstack--grains