两种方案:

        1>利用Thread.join()方法,使C进程等待AB进程完成后执行
        2>利用CountdownLatch定义一个计数器,在AB进程里用CountdownLatch. countDown()方法使计数器减少,在等待进程C中使用CountDownLatch.await()方法等待,直到计数器变为0,才开始执行
1.    思路:
a)    建立A B C三个线程,空跑模拟线程运行。
b)    在父进程中通过start()启动各子线程。
c)    利用上述两种方案完成任务。
2.    代码:
TestThread.java

public 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();    }}