多线程先明白一个术语“中断状态”,中断状态为true,线程中断。

interrupt():就是通知中止线程的,使“中断状态”为true。

isInterrupted():就是打印中断状态的,然后不对中断状态有任何操作。

interrupted():检测运行这个方法的线程的中断状态,注意,是运行这个方法的线程,且会清除中断状态

   比如:新建了个对象MyThread,这个对象继承thread

public class MyThread extends Thread {
public MyThread(String name) {
super(name);
}
@Override
synchronized public void run() { for (int i = 0; i < 500000; i++) {
System.out.println("i=" + i);
if (isInterrupted()) {
System.out.println("MyThread类-this.interrupted()= " + this.interrupted()
+ ",Thread.currentThread().isInterrupted()= " + Thread.currentThread().isInterrupted());
break;
}
}
}
}

    在另外一个类比如叫Run类

public class Run {
public static void main(String[] args) throws InterruptedException {
MyThread m1 = new MyThread("A");
m1.start();
Thread.sleep(500);
m1.interrupt();
System.out.println("Run类-m1.interrupted()= " + m1.interrupted());
}
}

    Run类的main方法里面new了一个MyThread类对象m1,

    调用m1的start()方法让m1先跑起来,

    然后调用m1的interrupt()方法,通知m1中断,此时m1中断状态为true,所以在m1中,isInterrupted()的值即中断状态为true,进入m1的打印方法里面,调用了interrupted()方法,这个就是重点,调用了interrupted()方法,先返回了中断状态true,然后把中断状态的值设置为false,所以再调用m1的isInterrupted()拿到的中断状态就为false了,

    现在回去Run类的main方法看一下,虽然在main方法中它明面上看是打印了m1的中断状态,但是实际上它打印的是main方法这个线程的中断状态,所以main方法线程的中断状态是false,对于这个

    官方解释:测试当前线程是否已经中断,当前线程是指运行 this.interrupted() 方法的线程

-------------------------------------------------看看文档解释:------------------------------------------------------

    

关于Java多线程-interrupt()、interrupted()、isInterrupted()解释的更多相关文章

  1. java多线程 interrupt(), interrupted(), isInterrupted()方法区别

    interrupt()方法: 作用是中断线程. 本线程中断自身是被允许的,且"中断标记"设置为true 其它线程调用本线程的interrupt()方法时,会通过checkAcces ...

  2. interrupt interrupted isInterrupted 方法对比、区别与联系 多线程中篇(八)

    interrupt interrupted isInterrupted 是三个“长相”非常类似的方法. 本文将对这三个方法简单的对比下,首先了解下线程停止的方式 线程停止方式 在Java中如果想停止一 ...

  3. 【JAVA多线程】interrupted() 和 isInterrupted() 的区别

    Thread 类中提供了两种方法用来判断线程的状态是不是停止的.就是我们今天的两位主人公 interrupted() 和 isInterrupted() . interrupted() 官方解释:测试 ...

  4. java中interrupt,interrupted和isInterrupted的区别

    文章目录 isInterrupted interrupted interrupt java中interrupt,interrupted和isInterrupted的区别 前面的文章我们讲到了调用int ...

  5. Java 多线程 interrupt方法

    interrupt 下面是interrupt方法的文档的一部分: * <p> If this thread is blocked in an invocation of the {@lin ...

  6. Java Thread.interrupt interrupted

    Java Thread.interrupt @(Base)[JDK, 线程, interrupt] 原文地址,转载请注明 下面这个场景你可能很熟悉,我们调用Thread.sleep(),conditi ...

  7. 多线程-interrupt(),isInterrupted(),interrupted()(转)

    Content 背景 中断 相关方法 阻塞方法 不可中断的阻塞方法 处理不支持中断的线程中断的常用方法 处理InterruptedException 待决中断 实例1 实例2 参考资料 Top 背景 ...

  8. 多线程-interrupt(),isInterrupted(),interrupted()

    背景 由于使用stop方法停止线程非常暴力,可能会导致一系列问题.因此,提出一种温和的方式:请求另外一个先不要在执行了,这就是中断方式. 此外有这样的场景:编写 一个程序,需要暂停一段时间,于是调用T ...

  9. 十四 关于interrupt, interrupted, isInterrupted

    1 判断线程是否是停止状态? interrupt() : interrupt方法用于中断线程.调用该方法的线程的状态为将被置为"中断"状态. 注意:线程中断仅仅是置线程的中断状态位 ...

随机推荐

  1. Selenium_界面的刷新、后退、前进操作(4)

    import time from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driv ...

  2. quasar框架在store中使用router跳转页面报错

    网上一通百度,终于在这篇博客中找到原因.  https://www.cnblogs.com/remly/p/12995936.html 原因是: 在router中导出了一个工厂函数, 既然是一个函数, ...

  3. nginx + tomcat 单个域名及多个域名的配置

    //nginx + tomcat 单个域名及多个域名的配置//修改nginx的配置文件,linux默认路径 /usr/local/nginx/conf/nginx.conf //prot为8082的w ...

  4. ubuntu 18.04 检测到系统程序出现问题

    检测到系统程序出现问题,想立即报告这个问题吗? 可以暂时先把这个提示关闭掉 $ sudo vi /etc/default/apport 找到第4行 修改为 enabled=0 保存退出 附linux中 ...

  5. Keil MDK STM32系列(五) 使用STM32CubeMX创建项目基础结构

    Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...

  6. rocketmq学习之-基本样例

    1 基本样例 在基本样例中我们提供如下的功能场景: 使用RocketMQ发送三种类型的消息:同步消息.异步消息和单向消息.其中前两种消息是可靠的,因为会有发送是否成功的应答. 使用RocketMQ来消 ...

  7. winform全局异常处理

    static void Main() { //设置应用程序处理异常方式:ThreadException处理 Application.SetUnhandledExceptionMode(Unhandle ...

  8. python网络爬虫-python基础(三)

    python安装 Anaconda的python科学计算环境,只需要想普通软件一样安装就可以把python的环境变量.解释器.开发环境都安装到计算机中 除此之外anaconda还提供众多的科学计算的包 ...

  9. dfs时间复杂度分析

    前言 之前一直想不明白dfs的时间复杂度是怎么算的,前几天想了下大概想明白了,现在记录一下. 存图方式都是链式前向星或邻接矩阵.主要通过几道经典题目来阐述dfs时间复杂度的计算方法. $n$是图中结点 ...

  10. MySQL读写问题(锁)

    一.概述 读-读:并发不存在问题,不需要加锁 写-写:并发存在问题,可能会造成脏写(一个事务没有写完,另一个事务也对相同的数据进行写),但是这种情况,任何一种隔离级别都不允许发生,在隔离级别的时候就解 ...