数値nをn個表示するのが,期待される動作
CountDownLatchWrongクラスを正しいカウントダウンラッチとなるよう修正し,正しくバリア同期を行うプログラムにしなさい.
ヒント:wait()メソッドを使用する場合はInterruptedExceptionの例外処理を書く必要がある.
以下のプログラムを参考に修正せよ。
どの部分にカウントダウンラッチとなるように修正すればいいのかが明確にわからなくなってしまいました。
class MyFuture<V> {
V value;
synchronized void set(V v) {
value = v;
notifyAll();
}
synchronized V get() {
try {
if (value == null) {
wait();
}
} catch (InterruptedException e) {
}
return value;
}
}
class Producer2 extends Thread {
MyFuture<Integer> f;
Producer2(MyFuture<Integer> f) {
this.f = f;
}
public void run() {
f.set(100);
}
}
class Consumer2 extends Thread {
MyFuture<Integer> f;
Consumer2(MyFuture<Integer> f) {
this.f = f;
}
public void run() {
System.out.println(f.get());
}
}
class FutureCorrect {
public static void main(String[] args) {
MyFuture<Integer> f = new MyFuture<Integer>();
Thread p = new Producer2(f);
Thread c1 = new Consumer2(f);
Thread c2 = new Consumer2(f);
c1.start();
p.start();
c2.start();
try {
p.join();
c1.join();
c2.join();
} catch (InterruptedException e) {
}
}
}
あなたの回答
tips
プレビュー