让线程等待其他线程先执行的方法
1.线程的join方法,底层还是调用了wait方法。
2.CountDownLatch,底层是aqs。
public static void main(String[] args) throws IOException, InterruptedException {
//设置计数器为2
CountDownLatch countDownLatch = new CountDownLatch(2);
CompletableFuture.runAsync(() -> {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//counter - 1;
countDownLatch.countDown();
System.out.println("子线程运行");
});
System.out.println("主线程等待");
countDownLatch.await(3000, TimeUnit.MILLISECONDS);
System.out.println("主线程超时等待结束运行");
}
注意:无论是使用join,还是CountDownLatch,均应该是有限时间等待,防止其他线程不能正常结束导致程序无法继续执行。