CountDownLatch是JUC包下的一个工具类,允许一个或多个线程等待,直到其他线程中执行的一个放行操作完后,等待线程才会继续往下执行的同步辅助。
可用于一个或多个线程中等待其他线程完成某项操作后再运行的场景。
首先看一下其用法:
1、先创建一个CountDownLatch的实例
参数是计数器(可以设置大于1的),也就是必须要设定的线程执行完后等待线程才会往下执行。
设置一个共享变量sharedNum,初始值为0
int sharedNum = 0;
CountDownLatch countDownLatch = new CountDownLatch(1);
2、创建多个线程,此处设置两个线程,分别是A和B,下面代码的意思是A线程必须等待B线程执行完后,A线程才会往下执行
new Thread(new Runnable() {
@Override
public void run() {
try {
1、调用await方法,使线程阻塞
countDownLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"获取sharedNum的值为"+sharedNum);
}
},"A").start();
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread