Java_Thread_join()

MSDN:Blocks the calling thread until a thread terminates

1. 什么是 the calling thread?

2. 什么是 a thread?

运行一个程序,即开启了一个进程和至少一个线程,干活的是线程而非进程!the calling thread 我们可以认为是MainThread(或者调用线程的线程,是不是有点绕?呵呵),a thread 我们就认为是被调用的线程。

最后,我们可以这样翻译MSDN:当 a thread 调用Join方法的时候,MainThread 就被停止执行,直到 a thread 线程执行完毕。

下面是测试代码:

class ThreadTesterA implements Runnable {

    private int counter;

    @Override

    public void run() {

        while (counter <= 10) {

            System.out.print("Counter = " + counter + " ");

            counter++;

        }

        System.out.println();

    }

}

class ThreadTesterB implements Runnable {

    private int i;

    @Override

    public void run() {

        while (i <= 10) {

            System.out.print("i = " + i + " ");

            i++;

        }

        System.out.println();

    }

}

public class ThreadTester {

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

        Thread t1 = new Thread(new ThreadTesterA());

        Thread t2 = new Thread(new ThreadTesterB());

        t1.start();

        t1.join(); // wait t1 to be finished

        t2.start();

        t2.join(); // in this program, this may be removed

    }

}

如果去掉t1.join()这个语句过后, 输出的顺序是乱的, 加上这个语句过后, 就会按照顺序输出,  从某种意义上说实现了同步。

ref: http://www.cnblogs.com/SkySoot/archive/2012/06/27/2566004.html

ref: http://my.oschina.net/u/2338362/blog/516237?p=1

猜你喜欢

转载自mikzhang.iteye.com/blog/2263701