多线程先明白一个术语“中断状态”,中断状态为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. Hadoop HA(高可用) 详细安装步骤

    什么是HA? HA是High Availability的简写,即高可用,指当当前工作中的机器宕机后,会自动处理这个异常,并将工作无缝地转移到其他备用机器上去,以来保证服务的高可用.(简言之,有两台机器 ...

  2. Golang 常见设计模式之选项模式

    熟悉 Python 开发的同学都知道,Python 有默认参数的存在,使得我们在实例化一个对象的时候,可以根据需要来选择性的覆盖某些默认参数,以此来决定如何实例化对象.当一个对象有多个默认参数时,这个 ...

  3. java 8 - java 17 升级指北

    2014年发布的java SE 8和2017年发布的java EE 8,至今还是使用最广泛的java版本,大部分java开发者对于java 8之后的升级总是敬而远之,这跟java 9以后的破坏性升级和 ...

  4. php中使用CURL之php curl详解

    curl是个什么东西?简单地说就是,curl是一个库,能让你通过URL和许多不同种的服务器进行勾搭.搭讪和深入交流,并且还支持许多协议.并且人家还说了curl可以支持https认证.http post ...

  5. 【Java常用类】String

    文章目录 String String实例化的方式 方式一:通过字面量定义 方式二:new + 构造器的方式 String s = new String("abc")方式创建对象,在 ...

  6. linux 安装mysql 可能遇到的小问题

    问题一. ./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No ...

  7. Electron+Vue开发跨平台桌面应用

    Electron+Vue开发跨平台桌面应用 xiangzhihong发布于 2019-12-23 虽然B/S是目前开发的主流,但是C/S仍然有很大的市场需求.受限于浏览器的沙盒限制,网页应用无法满足某 ...

  8. 《剑指offer》面试题10- I. 斐波那契数列

    问题描述 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: F(0) = 0,   F(1) = 1 F(N) = F(N - 1) + F(N - ...

  9. 《剑指offer》面试题33. 二叉搜索树的后序遍历序列

    问题描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同.   参考以下这颗二叉搜索树: 5 / \ ...

  10. Ajax_同源策略以及跨域问题

    Ajax_同源策略 同源策略是浏览器的一种安全策略, 同源指的是:协议.域名.端口.必须完全相同. 违背同源策略就是跨域. 而AJAX是默认遵循同源策略的: 同源说通俗一点呢就是页面跟获取请求的接口是 ...