Concurrency
class Foo {
private int counter = 1;
public Foo() {
}
public void first(Runnable printFirst) throws InterruptedException {
synchronized (this) {
while (counter != 1) {
this.wait();
}
printFirst.run();
counter = 2;
this.notifyAll();
}
// printFirst.run() outputs "first". Do not change or remove this line.
}
public void second(Runnable printSecond) throws InterruptedException {
synchronized (this) {
while (counter != 2) {
this.wait();
}
printSecond.run();
counter = 3;
this.notifyAll();
}
// printSecond.run() outputs "second". Do not change or remove this line.
// printSecond.run();
}
public void third(Runnable printThird) throws InterruptedException {
synchronized (this) {
while (counter != 3) {
this.wait();
}
printThird.run();
counter = 1;
this.notifyAll();
}
}
}Web Crawler with future
Last updated
Was this helpful?