2016-04-27 9 views

Antwort

0

Es scheint, als ob Sie über eine Art von Fairness in einer CountDownLatch sprechen.

Fairness ist nicht wirklich ein Problem für Countdown-Latches im Allgemeinen (und insbesondere in Java und seine java.util.concurrent Implementierung). Wenn die vordefinierte Anzahl von Countdowns erreicht ist, signalisiert das Latch alle Threads, die darauf gewartet haben.

Verhungern oder Scheduling Reihenfolge sind orthogonal zu der Latch-Funktionalität an diesem Punkt - es gibt keine Vorstellung von kontrollierten Auswahl aus der Menge/Warteschlange von wartenden Threads, wie Sie mit einem Semaphor oder Mutex haben können.

0

Dimitar Dimitrov sagte

... es gibt keinen Begriff kontrollierte Auswahl aus der Menge/Schlange von wartenden Threads, wie Sie mit einer Semaphore oder ein Mutex haben.

Und das ist, weil ein einzelner Betrieb auf einem Semaphore oder ein Mutex kann je nur freigeben eine Thread wartet. Wenn mehrere Threads warten, können Sie die Reihenfolge festlegen, in der sie freigegeben werden, indem Sie angeben, dass die erste Operation diese Freigabe auslöst und die nächste Operation diese Freigabe auslöst.

CountDownLatch ist anders, weil es einen Sinn macht, eine Reihenfolge zu definieren, wenn das ideale Verhalten für eine einzelne Operation ist, alle wartenden Threads gleichzeitig freizugeben?