Ich möchte wissen, warum utils.concurrent
solch komplizierten Quellcode haben. Dies ist ein Code, den ich für die CountDownLatch
kam und nach dem Testen erwartete ich etwas ähnliches im Quellcode zu finden, aber nein, es ist super komplex.Warum ist CountDownLatch so kompliziert?
Ist die Implementierung falsch?
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();
}
}
}
Und hier ist der Quellcode: Source Code CountDownLatch
Ihre Implementierung hat einfach nicht so viele Funktionen. Wenn Sie alle fehlenden Features hinzufügen, sieht Ihre Implementierung ähnlich aus. –
Features wie? Es gibt sehr komplexe Methoden, zum Beispiel, was ist mit dieser Schleife in der privaten Klasse Sync? –
Oh wow ... Wenn jemand downvote, zumindest sagen Sie mir, warum bitte. –