package com.example.demo;
import java.util.concurrent.CountDownLatch;
/**
* @ClassName Foo
* @Description: 1114. 按序打印(多线程)
* @Author xtanb
* @Date 2019/9/23
* @Version V1.0
**/
public class Foo {
private CountDownLatch countDownLatchA;
private CountDownLatch countDownLatchB;
public Foo() {
this.countDownLatchA = new CountDownLatch(1);
this.countDownLatchB = new CountDownLatch(1);
}
public void first(Runnable printFirst) throws InterruptedException {
// printFirst.run() outputs "first". Do not change or remove this line.
printFirst.run();
countDownLatchA.countDown();
}
public void second(Runnable printSecond) throws InterruptedException {
countDownLatchA.await();
// printSecond.run() outputs "second". Do not change or remove this line.
printSecond.run();
countDownLatchB.countDown();
}
public void third(Runnable printThird) throws InterruptedException {
countDownLatchB.await();
// printThird.run() outputs "third". Do not change or remove this line.
printThird.run();
}
}