什么是interrupt
什么是interrupt?
interrupt是java中属于Thread的一个方法,调用它目的是给线程发出中断信号,但是不保证线程真的会中断。线程是否中断是由被通知的线程自己处理。
如果线程处于被阻塞状态(例如处于sleep, wait, join 等状态),那么线程将立即退出被阻塞状态,并抛出一个InterruptedException异常。对于Interrupt异常,当线程等待,休眠或者以其他方式被占用,并且线程在活动之前或期间(即线程状态变为runnable之前或变成runnable途中,就是不处于runnable状态)被中断时抛出。换句话说,线程在由BLOCKED,WAITING,TIME_WAITING状态变为runnable之前或变成runnable途中被中断,就会抛出interruptException。
上述代码中,有两个线程,由于CarOne休眠1500ms,而CarTwo休眠3000ms,但是由于线程CarOne中调用的CarTwo的interrupt()方法,所以在执行次方法,CarTwo结束休眠,并不需要休眠3s。
线程抛出InterruptException只是在非活跃下的表现形式,中断本身和线程活跃状态或非活跃状态无关,只是线程在非活跃状态下被中断不抛出InterruptException异常无法回到运行状态,回不到运行就无法处理中断。
若线程在运行状态下,可以通过给线程设置中断标志位,此时并不会中断线程。只是给了线程一个中断的标志,是否中断由线程自己处理。
线程设置了两个方法提示线程是否设置了中断标识。
isInerrupted()方法会给线程设置标志,由线程处理接下来的流程。且中断标志不会被清理。
interrupted()方法会给线程设置中断标志,通知到线程之后会清除这个标志。
什么是interrupt相关推荐
- (Interrupt Latency) 中断延迟
中断延迟 (Interrupt Latency) 中断延迟 是指从硬件中断发生到开始执行中断处理程序第一条指令之间的这段时间. 也就是: 计算机接收到中断信号到操作系统作出响应,并完成换到转入中断服务 ...
- Linux中断(interrupt)子系统之一:中断系统基本原理【转】
转自:http://blog.csdn.net/droidphone/article/details/7445825 这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于AR ...
- typedef interrupt void (*PINT)(void)的分析
今天写程序时,在DSP2833x_PieVect.h看到typedef interrupt void (*PINT)(void)突然一愣,上网查了下发现在这是加了interrupt 中断关键字的函数指 ...
- 从一道面试题分析Thread.interrupt方法
阿里面试题: public class TestThread {public static void main(String[] args) {Thread t1 = new Thread() {@O ...
- 【高并发】又一个朋友面试栽在了Thread类的stop()方法和interrupt()方法上!
来自:冰河技术 写在前面 新一轮的面试已经过去,可能是疫情的原因吧,很多童鞋纷纷留言说今年的面试题难度又提高了,尤其是对并发编程的知识.我细想了下,也许有那么点疫情的原因吧,但无论面试的套路怎么变,只 ...
- Java多线程(九)—— interrupt()和线程终止方式
一.interrupt() 说明 interrupt()的作用是中断本线程. 本线程中断自己是被允许的:其它线程调用本线程的interrupt()方法时,会通过checkAccess()检查权限.这有 ...
- Android Thread interrupt 中断JAVA线程(转)
转载自:http://hi.baidu.com/%E3%C6%CE%C4%B7%E5/blog/item/d8959f1b6716c8168618bfbb.html 假如我们有一个任务如下,交给一个J ...
- Java线程状态及 wait、sleep、join、interrupt、yield等的区别
Java中的线程状态(详见Java线程状态及转换-MarchOn): wait:Object类的实例方法,释放CPU执行权,进入等待状态,直到 被中断.被拥有该对象锁的线程唤醒(notify或not ...
- Java Thead.interrupt 方法没有使线程停止工作
有问题的interrupt package com.xinyu.test;public class TestInterrupt {public static void main(String[] ar ...
- interrupt分析
转载自 https://blog.csdn.net/zhangliangzi/article/details/52485319 interrupt简述 interrupt() 方法只是改变中断状态而已 ...
最新文章
- 针对IT人员的四月热点新书推荐
- 纯数学教程 Page 203 例XLI (1)
- 你应该将应用迁移到Spring 4的五个原因
- PHP用CURL伪造IP和来源
- python三个数求和_Python:list是否包含3个连续的整数,总和为7...
- oracle命令分析3
- VIM学习网址和资料收集
- 浙大PAT乙级1004. 成绩排名 (20)
- redis原理及实现
- 在Python数据库连接池中如何创建请求连接的方案
- Neutron中的网络I/O虚拟化
- Julia: map、匿名函数和“差之毫厘,谬之千里”
- UnityHub下载缓存位置
- JSzip 前端处理下载打包文件夹
- 第三空间娱乐体验重构:AITO 问界 M5雕刻的七宝楼台
- Failed to execute vcredist_x64.exe
- 深度学习二分类问题--IMDB数据集
- 我的世界 Java1.12.2联机下载_我的世界1.12.2
- android4.4风格,Android 4.4消息汇总 扁平化风格来袭
- 目前人工智能的主要研究方向都有哪些?