java并发编程:join用法

来源:互联网 发布:java的发展方向 编辑:程序博客网 时间:2024/06/06 03:55


join是Thread类的一个方法,启动线程后直接调用,例如:

Thread t = new AThread(); t.start(); t.join();

为什么要用join( ) 


在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后再结束,这个时候就要用到join()方法了。


join()的作用是:“等待该线程终止”,这里需要理解的就是该线程是指的主线程等待子线程的终止。也就是在子线程调用了join()方法后面的代码,只有等到子线程结束了才能执行。


看下面实例代码1:

    public class JoinTest implements Runnable{                    public static int a = 0;                public void run() {              for (int k = 0; k < 5; k++) {                  a = a + 1;              }          }                public static void main(String[] args) throws Exception {              Runnable r = new JoinTest();              Thread t = new Thread(r);              t.start();                    System.out.println(a);          }             }  

很明显,输出的结果可能是5,但是也很可能不是,但若改成

    public static void main(String[] args) throws Exception {              Runnable r = new JoinTest();              Thread t = new Thread(r);              t.start();                    t.join(); //加入join()              System.out.println(a);          }     

那么输出的结果就一定是5了。


http://uule.iteye.com/blog/1101994

http://www.open-open.com/lib/view/open1371741636171.html

0 0