两种方案:
1>利用Thread.join()方法,使C进程等待AB进程完成后执行 2>利用CountdownLatch定义一个计数器,在AB进程里用CountdownLatch. countDown()方法使计数器减少,在等待进程C中使用CountDownLatch.await()方法等待,直到计数器变为0,才开始执行1. 思路:a) 建立A B C三个线程,空跑模拟线程运行。b) 在父进程中通过start()启动各子线程。c) 利用上述两种方案完成任务。2. 代码:TestThread.javapublic class TestThread { public static void main(String[] args){ Thread A=new Thread(new Runnable() { @Override public void run() { int i=0; while(i<18){ try { Thread.sleep(1000); }catch (Exception e){ e.printStackTrace(); } i++; } System.out.println("A OK"); } }); Thread B=new Thread(new Runnable() { @Override public void run() { int i=0; while(i<10){ try { Thread.sleep(1000); }catch (Exception e){ e.printStackTrace(); } i++; } System.out.println("B OK"); } }); Thread C=new Thread(new Runnable() { @Override public void run() { try { A.join(); B.join(); } catch (Exception e) { e.printStackTrace(); } int i=0; while(i<6){ try { Thread.sleep(1000); }catch (Exception e){ e.printStackTrace(); } i++; } System.out.println("C OK"); } }); A.start(); B.start(); C.start(); }}TestThread2.java
import java.util.concurrent.CountDownLatch;public class TestThread2 { public static void main(String[] args){ CountDownLatch count=new CountDownLatch(2); new Thread(new Runnable() { @Override public void run() { int i=0; while(i<18){ try { Thread.sleep(1000); }catch (Exception e){ e.printStackTrace(); } i++; } System.out.println("A OK"); count.countDown(); } }).start(); new Thread(new Runnable() { @Override public void run() { int i=0; while(i<10){ try { Thread.sleep(1000); }catch (Exception e){ e.printStackTrace(); } i++; } System.out.println("B OK"); count.countDown(); } }).start(); new Thread(new Runnable() { @Override public void run() { try { count.await(); } catch (Exception e) { e.printStackTrace(); } int i=0; while(i<6){ try { Thread.sleep(1000); }catch (Exception e){ e.printStackTrace(); } i++; } System.out.println("C OK"); } }).start(); }}