join

Threadjoin方法

A线程执行到了B线程Join方法时A就会等待,等B线程都执行完A才会执行,Join可以用来临时加入线程执行

本案例,启动了一个JoinThread线程,main(主线程)进行for循环,当计数器为50时,让JoinThread,通过join方法,加入到主线程中,发现只有JoinThread线程执行完,主线程才会执行完毕.

可以刻意让JoinThread线程sleep,如果JoinThread没有调用join方法,那么肯定是主线程执行完毕,但是由于JoinThread线程加入到了main线程,必须等JoinThread执行完毕主线程才能继续执行。

class JoinThread implements Runnable {

 

@Override

public void run() {

int i = 0;

while (i < 3) {

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println(Thread.currentThread().getName() + " i:" + i);

i++;

}

}

}

 

public class Demo10 {

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

JoinThread jt = new JoinThread();

Thread th = new Thread(jt, "one");

th.start();

int i = 0;

while (i < 20) {

if (i == 10) {

th.join();

}

System.err.println(Thread.currentThread().getName() + " i:" + i);

i++;

 

}

}

}

上述程序用到了Thread类中的join方法,即th.join语句,作用是将th对应的线程合并到嗲用th.join语句的线程中,main方法的线程中计数器到达100之前,main线程和one线程是交替执行的。在main线程中的计数器到达100后,只有one线程执行,也就是one线程此时被加进了mian线程中,one线程不执行完,main线程会一直等待

带参数的join方法是指定合并时间,有纳秒和毫秒级别。

 

posted on 2016-10-18 17:53  眼泪笑我愚昧  阅读(213)  评论(0编辑  收藏  举报

导航