多线程同步执行,CountDownLatch使用
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
class CountDownLatchTests {
public static void main(String[] args) throws InterruptedException {
//相当于计数器
CountDownLatch countDownLatch = new CountDownLatch(5);
//计数器总数是5,当减少为0,任务才继续向下执行
for (int i = 0; i < 10; i++) {
int finalI = i;
new Thread(() -> {
try {
TimeUnit.SECONDS.sleep(finalI);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "-->start");
countDownLatch.countDown();
}).start();
}
countDownLatch.await();
System.out.println("main线程继续向下执行");
}
}
执行结果