Java检测线程中断状态的方法示例

 更新时间:2019年10月18日 09:03:20   作者:cakincqm  
这篇文章主要介绍了Java检测线程中断状态的方法,结合实例形式分析了java针对线程中断状态检测的相关实现技巧,需要的朋友可以参考下

本文实例讲述了Java检测线程中断状态的方法。分享给大家供大家参考,具体如下:

一 代码

public class InterruptCheck {
  public static void main( String[] args ) throws Exception {
    // sleepThread不停尝试睡眠
    Thread sleepThread = new Thread(new SleepRunner(), "SleepThread");
    sleepThread.setDaemon(true);
    // busyThread不停运行
    Thread busyThread = new Thread(new BusyRunner(), "BusyThread");
    busyThread.setDaemon(true);
    sleepThread.start();
    busyThread.start();
    // 休眠5秒,让sleepThread和busyThread充分运行
    Thread.sleep(5000);
    sleepThread.interrupt();
    busyThread.interrupt();
    System.out.println("休眠线程中断标识位为: " + sleepThread.isInterrupted());
    System.out.println("忙碌线程中断标识位为: " + busyThread.isInterrupted());
    // 防止sleepThread和busyThread立刻退出
    Thread.sleep(2000);
  }
  static class SleepRunner implements Runnable {
    @Override
    public void run() {
      try {
        while (true) {
          Thread.sleep(10000);
        }
      } catch (InterruptedException e) {
        System.out.println("线程被中断" );
      }
    }
  }
   static class BusyRunner implements Runnable {
    @Override
    public void run() {
      while (true) ;//do nothing
    }
  }
}

二 运行

线程被中断
休眠线程中断标识位为:  false
忙碌线程中断标识位为:  true

三 说明

从运行结果来看,抛出InterruptedException中断异常的线程(sleepThread),Java虚拟机先将它的中断标识清除(即让isInterrupted()返回false),然后再中断这个线程。而一直处于忙碌的线程,中断标识位一直保持有效(isInterrupted()返回true)。

中断对正在运行的线程不起作用,只对阻塞线程起作用。

更多java相关内容感兴趣的读者可查看本站专题:《Java进程与线程操作技巧总结》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

相关文章

  • Java+ElasticSearch+Pytorch实现以图搜图功能

    Java+ElasticSearch+Pytorch实现以图搜图功能

    这篇文章主要为大家详细介绍了Java如何利用ElasticSearch和Pytorch实现以图搜图功能,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解一下
    2023-06-06
  • spring中@ControllerAdvice 注解的使用

    spring中@ControllerAdvice 注解的使用

    @ControllerAdvice注解是Spring3.2中新增的注解,主要用于Controller的全局配置,本文就来介绍一下spring中@ControllerAdvice 注解的使用,感兴趣的可以了解一下
    2024-09-09
  • Springboot和Jpa实现学生CRUD操作代码实例

    Springboot和Jpa实现学生CRUD操作代码实例

    这篇文章主要介绍了Springboot和Jpa实现学生CRUD操作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Java的文档注释之生成帮助文档的实例

    Java的文档注释之生成帮助文档的实例

    下面小编就为大家分享一篇Java的文档注释之生成帮助文档的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • Spring @Async 的使用与实现的示例代码

    Spring @Async 的使用与实现的示例代码

    本篇文章主要介绍了Spring @Async 的使用与实现的示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Java稀疏数组的应用实践

    Java稀疏数组的应用实践

    本文主要介绍了Java稀疏数组的应用实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Java IO流相关知识代码解析

    Java IO流相关知识代码解析

    这篇文章主要介绍了Java IO流相关知识代码解析,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • JavaWeb入门:ServletContext详解和应用

    JavaWeb入门:ServletContext详解和应用

    这篇文章主要介绍了Java ServletContext对象用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-07-07
  • 记录jdk21连接SQLServer因为TLS协议报错问题

    记录jdk21连接SQLServer因为TLS协议报错问题

    在使用Druid连接池连接SQL Server时,可能会遇到因TLS版本不匹配导致的连接失败问题,具体表现为客户端使用TLS1.3或TLS1.2,而SQL Server仅支持TLS1.0,导致无法建立安全连接,解决方法是修改JDK的安全配置,启用TLS1.0
    2024-10-10
  • java charAt()返回数值型的使用示例

    java charAt()返回数值型的使用示例

    本文主要介绍了java charAt()返回数值型的使用示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11

最新评论