线程的同步方式
class Foo {
public Foo() {
}
CountDownLatch countDownLatch1 = new CountDownLatch(1);
CountDownLatch countDownLatch2 = new CountDownLatch(1);
public void first(Runnable printFirst) throws InterruptedException {
// printFirst.run() outputs "first".
printFirst.run();
countDownLatch1.countDown();
}
public void second(Runnable printSecond) throws InterruptedException {
countDownLatch1.await();
// printSecond.run() outputs "second".
printSecond.run();
countDownLatch2.countDown();
}
public void third(Runnable printThird) throws InterruptedException {
countDownLatch2.await();
// printThird.run() outputs "third".
printThird.run();
}
}
可以保持线程按照顺序执行
new CountDownLatch(n);
可以定一个
countDownLatch.countDown();
可以让n-1
countDownLatch.await();
是需要等变量n变为0的时候才可以执行下面的代码,用来保证线程的同步性