为什么使用sleep方法线程就中止了?
我有两个类,分别如下所示:
public class MyThread extends Thread{
private int i = 0;
@Override
public void run() {
try {
while(true){
i++;
System.out.println("i="+(i+1));
Thread.sleep(1000);
}
} catch (Exception e) {
}
}
}
public class Run {
public static void main(String[] args) throws InterruptedException {
MyThread mt = new MyThread();
mt.setDaemon(true);
mt.start();
Thread.sleep(5000);
System.out.println("离开~");
}
}
运行后结果:
i=2
i=3
i=4
i=5
i=6
离开~
i=7
现在的问题是:为什么线程中止了?我没有用interrupt方法,也没有抛异常或者return啊???
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
线程的
setDaemon(true);
会将一个线程设置为 后台线程,后台线程与普通线程的区别在于,后台线程会随着主线程的退出而退出因为
main
线程终止了。主线程结束后,其他线程都会被 kill 掉