感觉以后可能会用到。
import java.util.concurrent.CountDownLatch;
public class Demo {
public static void main(String[] args) throws InterruptedException {
count();
}
private static void count() throws InterruptedException {
System.out.println("赛马准备:");
CountDownLatch latch = new CountDownLatch(10);
Horse s = new Horse(latch);
//十匹马就绪
for (int i = 0; i < 10; i++) {
new Thread(s).start();
}
//等待发号施令
new Thread(() -> {
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
});
//发号施令 10声倒数,开始比赛
for (int i = 0; i < 10; i++) {
latch.countDown();
if (i==9) {
System.out.println("赛马开始");
}
}
Thread.sleep(100);
System.out.println("赛马结束");
}
static class Horse implements Runnable {
private CountDownLatch countDownLatch;
Horse(CountDownLatch s) {
this.countDownLatch = s;
}
@SneakyThrows
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "匹马准备完成了;");
countDownLatch.await();
System.out.println(Thread.currentThread().getName() + "匹马到达终点;");
}
}
}