线程等待 Join()方法

  • Join()方法是让一个线程等待另一个线程的完成
    这里写图片描述
    下面看个例子:
package project11;public class TestJoin extends Thread {public void run() {for(int i= 1;i<=10;i++)//线程循环10次输出{System.out.println(Thread.currentThread().getName()+"第"+i+"次运行");}System.out.println(Thread.currentThread().getName()+"运行结束");}public static void main(String [] args) {   //main函数的主线程开始运行System.err.println("主线程开始运行");TestJoin tj = new TestJoin();   //创建线程类tj.setName("线程1");    //给线程起名字try {long start = System.nanoTime();tj.start();tj.join();  //等待tj线程运行结束long end = System.nanoTime();System.out.println("耗时"+(end-start)/1000000+"毫秒");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("主线程运行结束");//main函数的主线程运行结束}}
从程序运行结果可以看出,main方法代表的主线程在建立TestJoin tj 这个线程对象后,调用t.start()来运行线程,并调用了tj.join()来等待线程tj的完成,在线程tj完成了10次字符输出并结束线程后,主线程才计算了线程tj的耗时,并输出字符然结束主线程的运行。
![这里写图片描述](https://img-blog.csdn.net/20171223123557230?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzkwNDY3Mjc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
**这样理解会简单一些**
**!!!!!把程序中的tj.join()这行程序注释掉,会发现**
如果没有使用Join方法,那么主线程就会在tj线程还未运行结束前就结束。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部