当主线程中含有子线程的时候,主线程是不会等待子线程结束再进行主线程中相关的运算的;
比如如下例子:
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("主线程运行开始:");
Thread chirdthred = new Thread(() -> {
for(int i=0;i<100;i++) {
System.out.println("子线程中打印的数字:"+i);
}
System.out.println("子线程运行完毕");
});
chirdthred.start();
System.out.println("主线程运行完毕");
}
打印的结果为:
如果想要主线程等待子线程,可以使用join()方法;
java中多线程的join()方法可以使主线程等待子线程运行完再结束相关运算;
t.join()方法阻塞调用此方法的线程(calling thread),直到线程t完成,此线程再继续;通常用于在main()主线程内,等待其它线程完成再结束main()主线程;
比如我们再加几行代码:
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("主线程运行开始:");
Thread chirldthred = new Thread(() -> {
for(int i=0;i<30;i++) {
System.out.println("子线程中打印的数字:"+i);
}
System.out.println("子线程运行完毕");
});
chirldthred.start();
try {
chirldthred.join();
} catch (InterruptedException e) {
// TODO: handle exception
e.printStackTrace();
}
System.out.println("主线程运行完毕");
}
显示主线程等待子线程运行完毕再进行相关运算