java join用法

前提:spa

设有两个线程,其中一个为主线程,在主线程中调用另一个线程,称为目标线程线程

情景:code

在主线程中建立子线程,并启动子线程,而子线程中要进行大量的耗时运算,当主线程处理到某个位置时,须要用到子线程的处理结果(此时子线程还未结束),这时候就要用到join();方法。在主线程的某个位置执行了目标线程.join();方法后,主线程将再也不继续向下执行,而将等待目标线程终止后,主线程才会再向下执行。 资源


代码例子以下 :unicode

package commicropower;
it

class JoinTest1 implements Runnable{io

public static int a = 0;  class

 

    public void run() {  方法

        for (int k = 0; k < 5; k++) {  im

            a = a + 1;  

        }  

    }  

}


public class JoinTest {  

    public static void main(String[] args) throws Exception {  

        Runnable r = new JoinTest1();  

        Thread t = new Thread(r);  

        t.start();        

        t.join();

        System.out.println(JoinTest1.a);  

    }         

}  

加入t.join();方法运行结果为5  不加此方法, 运行结果为0

总结:当主线程 main方法执行System.out.println(a);这条语句时,线程尚未真正开始运行,或许正在为它分配资源准备运行。由于为线程分配资源须要时间,而main方法执行完t.start()方法后继续往下执行System.out.println(a);,这个时候获得的结果是a尚未被 改变的值0 。怎样才能让输出结果为5!其实很简单,join() 方法提供了这种功能。join() 方法,它可以使调用该方法的线程在此以前执行完毕。

相关文章
相关标签/搜索