交替打印字符串
import java.util.concurrent.locks.*;
class FizzBuzz {
private int n;
public FizzBuzz(int n) {
this.n = n;
}
private ReentrantLock lock = new ReentrantLock();
private Condition fizzCondition = lock.newCondition();
private Condition buzzCondition = lock.newCondition();
private Condition fizzbuzzCondition = lock.newCondition();
private Condition numberCondition = lock.newCondition();
private int i = 1;
public void fizz(Runnable printFizz) throws InterruptedException {
lock.lock();
try {
if (i % 3 != 0) {
fizzCondition.await();
}
for (; i <= n; ) {
printFizz.run();
numberCondition.signal();
fizzCondition.await();
}
} finally {
lock.unlock();
}
}
public void