Java中断一个线程操作示例

 更新时间:2019年10月18日 09:28:29   作者:cakincqm  
这篇文章主要介绍了Java中断一个线程操作,结合实例形式分析了java中断线程相关的interrupt()、isInterrupted()及interrupted()函数使用技巧,需要的朋友可以参考下

本文实例讲述了Java中断一个线程操作。分享给大家供大家参考,具体如下:

一 点睛

中断一个线程,意味着该线程在完成任务之前,停止它正在进行的一切当前的操作。

有三个比较常用的函数:

interrupt():一个正在运行的A线程,可以调用B线程对应的interrupt方法来中断线程B。这个方法的核心功能是,将线程B的中断标识位属性设置为true。

isInterrupted():通过该方法判断某个线程是否处于中断状态。

interrupted():这是一个静态方法,用来获取当前线程的中断状态,并清除中断状态。获取的是清除之前的值,也就是说连续两次调用此方法,第二次一定会返回false。

二 代码

public class SleepInterrupt implements Runnable
{
  public void run()
  {
    try
    {
      System.out.println( "在run()方法中 ——这个线程休眠10秒" );
      Thread.sleep( 10000 );
      System.out.println( "在run()方法中 —— 继续运行" );
    }
    catch( InterruptedException x )
    {
      System.out.println( "在run()方法中 - 中断线程" );
      return;
    }
    System.out.println( "在run()方法中 - 休眠之后继续完成" );
    System.out.println( "在run()方法中 - 正常退出" );
  }
  public static void main( String[] args )
  {
    SleepInterrupt si = new SleepInterrupt();
    Thread newThd = new Thread( si );
    newThd.start();
    // 在此休眠是为确保线程能运行一会
    try
    {
      System.out.println( "在main()方法中——休眠2秒!" );
      Thread.sleep( 2000 );
    }
    catch( InterruptedException e )
    {
      e.printStackTrace();
    }
    System.out.println( "在main()方法中——中断newThd 线程" );
    newThd .interrupt();
    System.out.println( "在main()方法中 ——退出" );
  }
}

三 运行

在main()方法中——休眠2秒!
在run()方法中 ——这个线程休眠10秒
在main()方法中——中断newThd 线程
在run()方法中 - 中断线程
在main()方法中 ——退出

四 说明

interrupt()方法并不会使正在执行的线程停止执行,它只对wait、join、sleep等方法或由于I/O操作等原因受阻的线程产生影响,使其退出暂停执行的状态。

它对正在运行的线程不起作用。

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

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

相关文章

  • Mybatis通过Mapper代理连接数据库的方法

    Mybatis通过Mapper代理连接数据库的方法

    这篇文章主要介绍了Mybatis通过Mapper代理连接数据库的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • 深入了解Java并发AQS的独占锁模式

    深入了解Java并发AQS的独占锁模式

    AQS是一种提供了原子式管理同步状态、阻塞和唤醒线程功能以及队列模型的简单框架。一般来说,同步工具实现锁的控制分为独占锁和共享锁,而AQS提供了对这两种模式的支持。本文主要来介绍一下独占锁模式,需要的可以参考一下
    2022-10-10
  • Struts之logic标签库详解

    Struts之logic标签库详解

    本文就Struts之logic标签库进行详细介绍,需要的朋友可以参考下
    2012-11-11
  • 详解SpringCloud-Alibaba-Seata分布式事务

    详解SpringCloud-Alibaba-Seata分布式事务

    这篇文章主要介绍了SpringCloud-Alibaba-Seata分布式事务的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 基于UncategorizedSQLException异常处理方案

    基于UncategorizedSQLException异常处理方案

    这篇文章主要介绍了基于UncategorizedSQLException异常处理方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Java 给图片和动图添加水印的方法

    Java 给图片和动图添加水印的方法

    本篇文章主要介绍了Java 给图片和动图添加水印的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Java Servlet3.0异步处理问题

    Java Servlet3.0异步处理问题

    这篇文章主要介绍了Java中Servlet3.0异步处理的原理以及遇到的问题分析,需要的朋友参考一下。
    2017-12-12
  • java中关于文本文件的读写方法实例总结

    java中关于文本文件的读写方法实例总结

    这篇文章主要介绍了java中关于文本文件的读写方法,实例总结了Java针对文本文件读写的几种常用方法,并对比了各个方法的优劣及特点,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • springboot使用之多个filter的执行顺序以及配置方式

    springboot使用之多个filter的执行顺序以及配置方式

    这篇文章主要介绍了springboot使用之多个filter的执行顺序以及配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • springboot集成opencv实现人脸识别功能的详细步骤

    springboot集成opencv实现人脸识别功能的详细步骤

    大家都知道OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上今天通过本文给大家分享springboot集成opencv实现人脸识别,感兴趣的朋友一起看看吧
    2021-06-06

最新评论