utils.concurrent
にこのような複雑なソースコードがある理由を知りたい。 これは私がCountDownLatch
のために出したコードですが、テストしたところ、ソースコードで何か似たものが見つかると思っていましたが、それはスーパーコンプレックスです。なぜCountDownLatchソースが複雑なのですか?
私の実装に間違いはありますか?
public class CountDown {
private int count;
private Object lock;
public CountDown(int count)
{
lock = new Object();
this.count = count;
}
//Just waits until it is notified by CountDown. Keeps waiting if not 0.
public void await() throws InterruptedException
{
synchronized (lock) {
while(count != 0)
{
lock.wait();
}
}
}
//Decreases the count and notifies for await's lock.
public void countDown()
{
synchronized (lock) {
this.count--;
lock.notify();
}
}
}
そしてここで、ソースコードがあります:Source Code CountDownLatch
あなたの実装には、多くの機能がありません。欠落している機能をすべて追加すると、実装はほとんど同じに見えます。 –
などの機能?非常に複雑なメソッドがあります。たとえば、プライベートクラスSync内のループはどうですか? –
ああ、うわー...もし誰かがdownvoteに行くなら、少なくとも私に教えてください。 –