【java】多线程之join方法

在逛论坛的时候发现这样一个问题:

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
发布了192 篇原创文章 · 获赞 318 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/zyxhangiian123456789/article/details/101390214