public static void testThread(){
CountDownLatch countDownLatch = new CountDownLatch(2);
System.out.println("MainTest.testThread,开启两个子线程:");
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("testThread,开启子线程1:");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("testThread,子线程1结束");
countDownLatch.countDown();
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("testThread,开启子线程2:");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("testThread,子线程2结束");
countDownLatch.countDown();
}
}).start();
try {
countDownLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("MainTest.testThread,主线程结束");
}
结果:
MainTest.testThread,开启两个子线程:
testThread,开启子线程1:
testThread,开启子线程2:
testThread,子线程1结束
testThread,子线程2结束
MainTest.testThread,主线程结束