赞
踩
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
join()的使用场景
在很多情况下,主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程将可能早于子线程结束。如果主线程需要知道子线程的执行结果时,就需要等待子线程执行结束了。主线程可以sleep(xx),但这样的xx时间不好确定,因为子线程的执行时间不确定,join()方法比较合适这个场景。
代码如下(示例):
public static void main(String[] args) {
Thread t = new Thread(() -> System.out.println("test"));
t.start();
System.out.println("main1");
try {
t.join();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("main2");
}
代码如下(示例):
main1
test
main2
或
test
main1
main2
Thread.join方法是将指定线程加入当前线程,将两个交替执行的线程转换成顺序执行。
上面的例子中,语句t.join(),在主线程中,调用线程t的join方法,将线程t加入主线程中,先执行完线程t,再执行主线程。
main1和test虽然会随机输出,但join方法后的代码(输出main2),一定会在线程t的run方法输出test之后执行。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。