最近老有不少开发人员咨询线程中断的相关知识,刚好利用业余时间总结了下,请大家不吝指教:

线程中断主要设涉及3个方法:实例方法 interrupt、静态方法interrupted、实例方法isInterrupted:

  1. 实例方法 interrupt作用:此方法调用后,如果调用实例线程当前正在调用wait、join、sleep、或在可中断的InterruptibleChannel IO操作、或阻塞在 Selector ,这几种情况下线程会在调用上述方法的代码块中抛出相应的InterruptedException ,但不会将中断状态值interrupt status由false设为true;如果当前现在正在正常执行,则调用interrupt方法调用后只是会设置一下线程的interrupt status,由false变成true;根据此方法的特点,抛出异常与设置中断状态值为true不会同时进行;

  2. 静态方法interrupted作用:清除当前线程的interrupt status状态值,即如果当前线程的中断状态值是true(即已被中断),则调用此方法后中断状态值将变成false,此时方法返回值为true,表示清楚中断状态成功;如果当前线程未被中断,则不会改变中断状态值,此时方法返回值为false。因此,如果在线程已被中断的情况下连续两次调用interrupted方法,第一次返回true,第二次返回false;根据此方法的特点,可以看出:只有当前线程自己才可以将中断状态值由true改为false

  3. 实例方法isInterrupted作用:只是检测调用实例线程的中断状态值,如果已中断则返回true,否则返回false;

然否?

转载于:https://www.cnblogs.com/dimmacro/p/5144420.html

关于线程中断的3个重要方法总结相关推荐

  1. java 线程退出cmd_java 线程的终止与线程中断

    关于线程终止: 1.一般来讲线程在执行完毕后就会进入死亡状态,那该线程自然就终止了. 2.一些服务端的程序,可能在业务上需要,常驻系统.它本身是一个无穷的循环,用于提供服务.那对于这种线程我们该如何结 ...

  2. 线程中断interrupt

    线程中的中断标志位 一. 与线程中断有关的3个方法: interrupt():中断线程,改变其线程的中断标志位(仅仅只有一个通知的作用),但是否中断由自己线程判断决定.false-->true ...

  3. java sleep方法_一文搞懂 Java 线程中断!

    在之前的一文<如何"优雅"地终止一个线程>详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程的方法吗?答案是肯定的,它就是我们今天要分享 ...

  4. 线程中断的三个方法的区别(interrupt/isInterrupted/interrupted)

    线程中断的三个方法的区别(interrupt/isInterrupted/interrupted)-总结自Java编程之美 方法定义 void interrupt():中断调用该方法的实例线程对象.当 ...

  5. java 线程中断(转)

    程序是很简易的.然而,在编程人员面前,多线程呈现出了一组新的难题,如果没有被恰当的解决,将导致意外的行为以及细微的.难以发现的错误.       在本篇文章中,我们针对这些难题之一:如何中断一个正在运 ...

  6. java吵醒线程_一文搞懂 Java 线程中断

    在之前的一文<如何"优雅"地终止一个线程>中详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程的方法吗?答案是肯定的,它就是我们今天要分 ...

  7. java 线程池 中断_如何中断(interrupt)线程(thread)(线程池的线程中断我的理解是一个意思)...

    1.概述基本实现是,通过 InterruptedException 异常来终止程序,至于线程什么时候终止,只能由jvm来决定了,若理解的不到位,欢迎大牛们指点 2.code 如下 package co ...

  8. Java并发编程(2):线程中断(含代码)

    使用interrupt()中断线程 当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它,该方法只是在目标线程中设置一个标志,表示它已经被中断,并立即返回.这 ...

  9. java 中断线程 wait_Java 线程中断(interrupt)与阻塞 (park)的区别

    很多Java开发人员(包括我),尤其是刚进入软件行业的新手,认为Java设置线程中断就是表示线程停止了,不往前执行了, Thread.currentThread().interrupt() 其实不是这 ...

最新文章

  1. python基本数据类型之序列类型和映射类型
  2. Linux系统监测-命令集
  3. 调查:新冠病毒对全球结构化布线市场的影响
  4. 利用Fiddler模拟POST请求
  5. LCS最长公共子序列
  6. 《大话设计模式》6个原则 转帖
  7. [vue] 你有使用过动态组件吗?说说你对它的理解
  8. Debian 7.8 通过 apt-get 安装 nodejs
  9. 在线算法交互、可视化与演示及应用(caffe 网络配置文件 .prototxt 的可视化)
  10. mysql 客户端乱码_mysql客户端中文乱码
  11. C#阶段提高之---交换数值
  12. 无法正常启动,错误0xc0150002
  13. 超越postman,国产接口联调工具新选择-ApiPost
  14. 有关GUASS高斯数据库的语法汇总(获取字符串字节数等)
  15. 基于 Verilog 的经典数字电路设计(3)选择器
  16. saas系统和传统服务器的区别,传统CRM与SaaS模式的区别
  17. PLSQL执行SQL脚本文件「适用批量」- 工具使用篇
  18. 用水泥混凝土摊铺机进行作业时该做到的日常养护工作
  19. 区块链Web3j编程: 账户交易(普通交易,裸交易)
  20. 数字IC后端物理实现流程1-环境建立

热门文章

  1. 用PHP调用WEBSERVICE
  2. 文件服务器的未分页内存
  3. A+B and C (64bit)
  4. 数据结构与算法笔记(二) 线性表(数组描述)
  5. 稳定币协议Fei Protocol通过FIP-2提案
  6. 今日恐慌与贪婪指数为38 等级从贪婪转为恐慌
  7. SAP License:HP面试手记
  8. 风控的这些工作机会看起来挺没用
  9. 量化风控学习:原来评分卡模型的概率是这么校准的!
  10. 2019-2、CentOS7_直播服务搭建_nginx_nginx-http-flv-module