1.main线程中先调用threadA.join() ,再调用threadB.join()实现A->B->main线程的执行顺序
调用threadA.join()时,main线程会挂起,等待threadA执行完毕返回后再执行,到执行threadB.join()时再挂起,待threadB执行完毕返回继续执行main
使用场景:线程B依赖线程A的计算结果的场景
package concurrency; public class JoinTest { public static void main(String[] args) throws InterruptedException{ Thread threadA = new Thread(new JoinJob(),"thread-A"); Thread threadB = new Thread(new JoinJob(),"thread-B"); threadB.start(); threadA.start(); threadA.join(); threadB.join(); System.out.println("main ending..."); } } class JoinJob implements Runnable{ @Override public void run() { System.err.println(Thread.currentThread().getName() + " starting..."); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + " ending..."); } }