java主线程退出 子线程_java的主线程为什么要等到子线程退出才结束?子线程并未join...

如题,我用pthread的时候,main函数里面如果创建了一个线程,那么当这个线程还在执行的时候,如果main退出了,那么子线程也退出。

但是我在windows平台上面用java的runnable实现的时候,发现不是这样:

public class useThread {

public static void main(String [] args) throws InterruptedException{

System.out.println("hw");

new Thread(new Runnable(){

@Override

public void run(){

try {

Thread.sleep(2000);

}catch(InterruptedException e){

e.printStackTrace();

}

System.out.println("ok, threads");//哪怕没有join,主线程也会等待这个子线程完成

}

}).start();

}

}

我在main里面创建了一个runnable,run方法中执行了sleep睡眠2s。我发现在intellij里面调试的时候,直到runnable退出,调试才结束。我在cmd命令行下面执行也是一样的结果。

不是说,必须这个Thread要join,才会让主线程来等待它结束吗?我这里的代码并没有join,主线程还是等待了。

为什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值