(48)21.4.4 检查中断---Java编程思想之并发笔记
来源:互联网 发布:2017年大学招生数据 编辑:程序博客网 时间:2024/04/30 00:56
21.4.4 检查中断
1.中断状态的设置
通过用interrupted()来检查中断状态,这个不仅可以告诉你interrupt()是否被调用过,而且可以清除中断状态。清除中断状态可以确保并发结构不会就某个任务被中断这个问题通知你两次,你可以经由单一的InterruptedException或单一的成功的Thread.interrupted()测试来得到这种通知。
2.例子
package jiangning.c21;
import java.util.concurrent.TimeUnit;
class NeedsCleanUp{
private final int id;
public NeedsCleanUp(int ident){
this.id = ident;
System. out.println("NeedsCleanUp " + id);
}
public void cleanUp(){
System. out.println("cleanUp " + id);
}
}
class Block3 implements Runnable{
private volatile double d = 0.0;
public void run(){
try {
while(!Thread.interrupted()){
//point1
NeedsCleanUp n1 = new NeedsCleanUp(1);
try{
System. out.println("Sleeping" );
TimeUnit. SECONDS.sleep(1);
//point2
NeedsCleanUp n2 = new NeedsCleanUp(2);
try {
System. out.println("Calculating" );
for(int i=0;i<2500000;i++){
d = d + (Math. PI + Math.E)/d;
}
System. out.println("Finished time-consuming opration");
} finally {
n2.cleanUp();
}
} finally{
n1.cleanUp();
}
}
System. out.println("Exiting while() test" );
} catch (InterruptedException e) {
System. out.println("Exiting via InterruptedException");
}
}
}
public class InterruptingIdiom {
public static void main(String[] args) throws Exception {
if(args.length != 1){
System. out.println("usage: java InterruptingIdiom delay-in-mS");
System. exit(1);
}
Thread t = new Thread(new Block3());
t.start();
TimeUnit. MILLISECONDS.sleep(new Integer(args[0]));
t.interrupt();
}
}
- (48)21.4.4 检查中断---Java编程思想之并发笔记
- (43)21.4.3 中断---Java编程思想之并发笔记
- (47)21.4.3 中断2---Java编程思想之并发笔记
- java编程思想笔记-并发之死锁
- java编程思想笔记-并发之CountDownLatch
- java编程思想笔记-并发之CyclicBarrier
- (41)21.4.1 并发 练习 17---Java编程思想之并发笔记
- (44)21.4.3 并发 练习 18---Java编程思想之并发笔记
- (45)21.4.3 并发 练习 19---Java编程思想之并发笔记
- (46)21.4.3 并发 练习 20---Java编程思想之并发笔记
- java编程思想笔记-并发之并发锁(一)
- (39)21.4 终结任务---Java编程思想之并发笔记
- (40)21.4.1 装饰性花园---Java编程思想之并发笔记
- (42)21.4.2 在阻塞时终结---Java编程思想之并发笔记
- java编程思想阅读笔记之造型检查
- (32)21.3.4 原子类---Java编程思想之并发笔记
- 并发(java编程思想)笔记
- JAVA编程思想笔记--并发
- (46)21.4.3 并发 练习 20---Java编程思想之并发笔记
- 抽象工厂模式
- 网站布局剖析实例:网页黄金分割
- (47)21.4.3 中断2---Java编程思想之并发笔记
- 1+1到底2不2?
- (48)21.4.4 检查中断---Java编程思想之并发笔记
- javascript的闭包
- Linux源的知识。。。
- Eclipse 4.2.0 安装及汉化全过程
- 面向对象和基于对象
- 软件质量管理之困境与对策思考
- 让archlinux bash语法高亮
- Notepad++的字体设置加Consolas和微软雅黑混合字体<转载>
- WifiDisplay on Andorid4.2