join(long millis)在jdk里是这样定义的等待该线程终止的时间最长为 millis
毫秒。超时为 0
意味着要一直等下去。直接看代码
public class JoinTest implements Runnable {
private static int a = 0;
public void run() {
while(a<10000000){
a++;
}
}
public static void main(String[] args) {
Thread t = new Thread(new JoinTest());
t.start();
System.out.println(a);
}
}
此处a将打印什么,在多线程环境中在t线程和主线程是同步执行的。所以在t执行到一部分的时候就执行了打印。接下来我们加入join的代码如下
public class JoinTest implements Runnable {
private static int a = 0;
public void run() {
while(a<10000000){
a++;
}
}
public static void main(String[] args) {
Thread t = new Thread(new JoinTest());
t.start();
try {
//t.sleep(1);
t.join(12); //
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(a);
}
}
这里的join的意思就是将等待t线程执行12毫秒后再执行主线程。换言之就是加入join后将异步执行的线程变成了同步。