在逛论坛的时候发现这样一个问题:
Thread tt = new Thread(new HelloRunnable());
tt.start();
tt.join();
既然java中join是让当前线程等待线程tt终止,然后再继续执行当前线程,那么,为什么还要生成thread tt干吗呢,不直接全在当前线程里顺序执行?效果不是一样?
比如有两个线程一个是主线程,另一个是我们定义的线程,我们定义的线程的操作可能比较耗时,当我们的主线程操作处理完成后,需要用到定义线程的结果时,这时就要用到join()方法了。
Thread tt = new Thread(new HelloRunnable());
tt.start();
//执行当前线程的一些操作,和tt线程并行运行
tt.join();
//当前线程后面的操作需要用到tt运行产生的结果,因此,前面调用join方法使得tt线程等待
join方法的另一个实例:
/**
* 测试join()
*
* @author mooner
*
*/
public class JoinThreadTest implements Runnable {
private static int a = 1;
public void run() {
System.out.println(Thread.currentThread().getName());
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName());
}
}
public static void main(String[] args) throws InterruptedException {
JoinThreadTest j = new JoinThreadTest();
Thread t = new Thread(j);
t.start();
t.join();
System.out.println("main");
}
}
结果如下:
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
main