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