如题,我用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,主线程还是等待了。
为什么?