Java中的多线程:sleep, wait, join 与 interrupt()的关系
来源:互联网 发布:淘宝店铺资质1000元 编辑:程序博客网 时间:2024/05/12 14:28
当线程执行sleep,wait,join的操作时,首先会检查当前线程的中断标志位(INT)是否为中断状态,如果是,则抛出InterruptedException,否则的话,就顺利进入各自想要的状态:睡觉,等待,阻塞调用线程
而 interrupt() 函数的作用就是将INT的状态设为True(即使当前线程处于中断状态),仅此而已,它并没有去做实际的中断线程的操作,所以,如果要使得sleep,wait,join在调用时抛出异常,必须满足以下两个简单的条件
1:interrupt()的调用必须在sleep,wait,join之前或之中(即等待或者是睡眠时期)。(肯定要在之前啦,不然人家已经执行完成了,都已经检测过标志位了,你再去设置中断标志位,人家又不会再去检查了)
2:interrupt()和sleep的调用是针对同一个线程的。即Thread1.interrupt() 与Thread1.sleep()连用;
而 interrupt()和wait,join的调用是既可以针对统一线程也可以针对不同线程的。当针对不同线程时,要满足:Thread1.interrupt() 与Thread2.sleep(), Thread.wait()连用,并且Thread2的操作应该是建立在Thread1之上的。具体原理是与线程间的阻塞有关,可参考一些教材,这里不在赘述。
- Java中的多线程:sleep, wait, join 与 interrupt()的关系
- java sleep wait join与interrupt的关系
- Java多线程之interrupt()方法与sleep(),join(),wait()的关系
- Java多线程sleep(),join(),interrupt(),wait(),notify()
- Java多线程sleep(),join(),interrupt(),wait(),notify()
- Java多线程sleep(),join(),interrupt(),wait(),notify()
- Java多线程sleep(),join(),wait(),interrupt()
- Java多线程sleep(),join(),interrupt(),wait(),notify()
- Java多线程sleep(),join(),interrupt(),wait(),notify()
- Java多线程sleep(),join(),interrupt(),wait(),notify()
- Java中的synchronized,wait,sleep,join,yeid,interrupt
- sleep,wait,join与interrupt,notify
- Java多线程-wait(), notify(), notifyAll()、yield()、sleep()、join()、interrupt()原理及使用
- java多线程中的join()、 sleep()、 yield()、 wait()函数
- java多线程中的sleep()方法与wait()方法的区别
- java 多线程中的sleep()与wait()方法的对比
- java中interrupt、join、sleep、notify、notifyAll、wait详解
- java中interrupt、join、sleep、notify、notifyAll、wait详解
- 计算机网络中的七层协议随笔
- Hello World!
- CG大事记
- java容器(一)
- Java_09_15课堂总结
- Java中的多线程:sleep, wait, join 与 interrupt()的关系
- 6.UEFI Shell Users’ Guide
- 给力注册
- CG快报 2011.9.11
- WPF中为ListView动态绑定数据且添加一列复选框
- hdu 4033
- find的用法
- Oracle 工具
- c# 与c/c++/java的区别(待续)