CountDownLatch能够实现线程之间的等待,CountDownLatch一般用于某个线程A等待若干个其他线程执行完任务之后,它才执行
public class MyTest {
public static void main(String[] args) {
CountDownLatch count = new CountDownLatch(2);
new Thread(){
@Override
public void run() {
System.out.println(this.getName()+"开始执行");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(this.getName()+"执行结束");
count.countDown();
}
}.start();
new Thread(){
@Override
public void run() {
System.out.println(this.getName()+"开始执行");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(this.getName()+"执行结束");
//
count.countDown();
}
}.start();
try {
System.out.println("等待另外两个线程执行结束");
count.await();//直到计数器为 O 的时候才会执行后面的代码
System.out.println("另外两个线程执行结束,执行count.await后面的方法");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}