返回信息流java新手求问:看马士兵java ,线程那章第二节讲sleep()方法的一个小程序:TestInterrupt.java
import java.util.*;
public class TestInterrupt {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
thread.interrupt();
}
}
}
class MyThread extends Thread {
public void run() {
while(true) {
System.out.println("===" + new Date() + "===");
try {
sleep(1000);
} catch (InterruptedException e) {
return;
}
}
}
}
正常打印出来是每秒钟打印出一行当前日期,打印10秒也就是10行,然后停止了,为什么我运行出来是一直在打印日期,不停止呢? 完全照着马士兵的程序敲了下来,为什么他的就停止了,我的就不停呢?。。。
哪里出问题了呢,哪位大神帮指点一下啊,多谢啦![ema11][ema23]
这是一条镜像帖。来源:北邮人论坛 / java / #30240同步于 2014/5/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
java基础线程问题
llsrlmz
2014/5/29镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
【 在 tianma25 的大作中提到: 】
: 为什么会打印10行后停止??
thread.start();线程启动,然后每隔一秒钟打印一行当前时间,10秒钟过后Thread.sleep(10000),主线程不高兴了,咣当一盆凉水泼上去thread.interrupt();,把thread进程打断,然后他会抛异常,然后catch到了,就return了,线程就结束了 ,然后应该就不继续打印了。
【 在 tianma25 的大作中提到: 】
: thread.interrupt(); 应该在catach()语句的外面吧,这样子线程才能被打断
哦 对对 我粗心大意了 谢谢啦 我太马虎了 [ema11]
【 在 taoch 的大作中提到: 】
: 怎么会停呢。。我觉得可能是原来程序有个地方把子线程设置成了后台线程,或者在哪里调用了一下interrupted()方法
问题找到了,我粗心大意把thread.interrupt();敲进了catch(){ } 大括号中, 多谢帮忙解答![ema11]