1. sleep() & interrupt()
线程A正在使用sleep()暂停着: Thread.sleep(100000);
如果要取消他的等待状态,可以在正在执行的线程里(比如这里是B)调用
a.interrupt();
令线程A放弃睡眠操作,这里a是线程A对应到的Thread实例
执行interrupt()时,并不需要获取Thread实例的锁定.任何线程在任何时刻,都可以调用其他线程interrupt().当sleep中的线程被调用interrupt()时,就会放弃暂停的状态.并抛出InterruptedException.丢出异常的,是A线程.

2. wait() & interrupt()
线程A调用了wait()进入了等待状态,也可以用interrupt()取消.
不过这时候要小心锁定的问题.线程在进入等待区,会把锁定解除,当对 等待中的线程调用interrupt()时(注意是等待的线程调用其自己的interrupt()), 会先重新获取锁定,再抛出异常.在获取锁定之前,是无法抛出异常的.

3. join() & interrupt()
当线程以join()等待其他线程结束时,一样可以使用interrupt()取消之.因为调用join()不需要获取锁定,故与sleep()时一样,会马上跳到catch块里. 注意是随调用interrupt()方法,一定是阻塞的线程来调用其自己的interrupt方法.如在线程a中调用来线程t.join().则a会等t执行完后在执行t.join后的代码,当在线程b中调用来a.interrupt()方法,则会抛出InterruptedException

4. interrupt()只是改变中断状态而已

interrupt()不会中断一个正在运行的线程。这一方法实际上完成的是,在线程受到阻塞时抛出一个中断信号,这样线程就得以退出阻塞的状态。

更确切的说,如果线程被Object.wait, Thread.join和Thread.sleep三种方法之一阻塞,那么,它将接收到一个中断异常(InterruptedException),从而提早地终结被阻塞状态。
如果线程没有被阻塞,这时调用interrupt()将不起作用;

如果线程没有被阻塞,这时调用interrupt()将不起作用; 
线程A在执行sleep,wait,join时,线程B调用A的interrupt方法,的确这一个时候A会有InterruptedException异常抛出来.但这其实是在sleep,wait,join这些方法内部会不断检查中断状态的值,而自己抛出的InterruptedException。
如果线程A正在执行一些指定的操作时如赋值,for,while,if,调用方法等,都不会去检查中断状态,所以线程A不会抛出InterruptedException,而会一直执行着自己的操作.当线程A终于执行到wait(),sleep(),join()时,才马上会抛出InterruptedException.
若没有调用sleep(),wait(),join()这些方法,或是没有在线程里自己检查中断状态自己抛出InterruptedException的话,那InterruptedException是不会被抛出来的.

public void interrupt()
中断线程。

如果当前线程没有中断它自己(这在任何情况下都是允许的),则该线程的 checkAccess 方法就会被调用,这可能抛出 SecurityException

如果线程在调用 Object 类的 wait()wait(long)wait(long, int) 方法,或者该类的join()join(long)join(long, int)sleep(long)sleep(long, int) 方法过程中受阻,则其中断状态将被清除,它还将收到一个InterruptedException

public boolean isInterrupted()
测试线程是否已经中断。 线程的中断状态 不受该方法的影响。

线程中断被忽略,因为在中断时不处于活动状态的线程将由此返回 false 的方法反映出来。

返回:
如果该线程已经中断,则返回 true;否则返回 false
public static boolean interrupted()
测试当前线程是否已经中断。 线程的中断状态 由该方法清除。换句话说,如果连续两次调用该方法,则第二次调用将返回 false(在第一次调用已清除了其中断状态之后,且第二次调用检验完中断状态前,当前线程再次中断的情况除外)。

线程中断被忽略,因为在中断时不处于活动状态的线程将由此返回 false 的方法反映出来。

返回:
如果当前线程已经中断,则返回 true;否则返回 false

Thread类的interrupt(),interrupted(),isInterrupted()相关推荐

  1. 关于interrupt(),interrupted(),isInterrupted()用法分析

    我想代码是非常容易解释这个问题的了.下文会给出总结. 总结点击这里或者往下阅读: 直接来一段小代码吧: public class Interrupt {public static void main( ...

  2. Thread类中interrupt()、interrupted()和isInterrupted()方法详解

    首先看看官方说明: interrupt()方法 其作用是中断此线程(此线程不一定是当前线程,而是指调用该方法的Thread实例所代表的线程),但实际上只是给线程设置一个中断标志,线程仍会继续运行. i ...

  3. Thread中interrupt()interrupted()和isInterrupted()的区别

    2019独角兽企业重金招聘Python工程师标准>>> 在java线程中,线程的状态分为6种.官方文档的解释是: /*** Thread state for a thread whi ...

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

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

  5. isInterrupted() interrupt() interrupted() 方法的简单解释

    isInterrupted() interrupt() interrupted() 方法的简单解释 1.isInterrupted() 和 interrupt() 是实例方法,必须要通过对象实例来调用 ...

  6. 线程中断机制 interrupt、isInterrupted、interrupted方法

    ①. 什么是中断 ①. 一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止,所以,Thread.stop.Thread.suspend.Thread. resume都已经被废弃了 ② ...

  7. 【高并发】又一个朋友面试栽在了Thread类的stop()方法和interrupt()方法上!

    来自:冰河技术 写在前面 新一轮的面试已经过去,可能是疫情的原因吧,很多童鞋纷纷留言说今年的面试题难度又提高了,尤其是对并发编程的知识.我细想了下,也许有那么点疫情的原因吧,但无论面试的套路怎么变,只 ...

  8. Java Thread类的静态布尔型interrupted()方法(带示例)

    线程类静态布尔型interrupted() (Thread Class static boolean interrupted()) This method is available in packag ...

  9. 据说有人面试栽在了Thread类的stop()方法和interrupt()方法上

    摘要:今天就简单的说说Thread类的stop()方法和interrupt()方法到底有啥区别. 本文分享自华为云社区<[高并发]又一个朋友面试栽在了Thread类的stop()方法和inter ...

最新文章

  1. Autocomplete 自动补全(Webform实战篇)
  2. python列表解析式_Python基础入门-列表解析式
  3. +智能”时代,华为如何将AI赋能到各行各业?
  4. 【学习笔记】HTTP通讯基础
  5. jsp页面调用ajax,在jsp中使用jquery的ajax
  6. 文档智能理解:通用文档预训练模型与数据集
  7. 马斯克宣布退出OpenAI,全身心投入特斯拉与SpaceX
  8. 三包围结构的字是什么样的_清桦学书之结构篇——包围结构。
  9. tcpdump高级过滤
  10. xshell远程登录工具的星号密码查看方法
  11. MySQL数据库简介
  12. HObject,unsigned char的相互转换
  13. DSP/DMP/SSP/RTB概念解释
  14. window.print() 文字过多会打印不全_明天开始打印准考证,你需要注意这些!
  15. 读计算机专业买什么电脑比较好?
  16. FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'D:/tjn/tra
  17. 它号称 Python 中性能最高的异步 Web 框架:超详细 Sanic 入门指南!
  18. 信息孤岛问题有多难?教你一招,免费解决
  19. C4D模型工具—细分
  20. 剑网3 插件 取得服务器信息,剑网3服务器监控插件

热门文章

  1. python爬取CSDN论坛
  2. K_A12_004 基于STM32等单片机采集人体红外感应(HC-SR501)模块串口与OLED0.96双显示
  3. 第2关:求解出n以内所有能被5整除的正整数的乘积-------C语言程序设计技术(循环结构程序设计1)
  4. R语言ggplot2包之坐标轴
  5. 【求助】求D3D8多次初始化的一个问题
  6. unity 鼠标放置 ui_ui层次结构以及不常见但至关重要的任务放置在哪里
  7. C+实现RSA加密解密
  8. Java 形参和实参
  9. 门禁系统服务器需要什么要求,完备的门禁系统应该具有这些功能
  10. 全球与中国住院EHR系统市场现状及未来发展趋势(2022)