Ich habe das folgende Programm, wo ich java.util.concurrent.CountDownLatch verwende und ohne Verwendung der await() -Methode funktioniert es gut. Ich bin neu in der Nebenläufigkeit und möchte den Zweck von erwarten() wissen. In "CyclicBarrier" kann ich verstehen, warum wait() benötigt wird, aber warum in "CountDownLatch"?Was ist der Zweck von wait() in CountDownLatch?
Programm,
Klasse CountDownLatchSimple
public static void main(String args[]) {
CountDownLatch latch = new CountDownLatch(3);
Thread one = new Thread(new Runner(latch),"one");
Thread two = new Thread(new Runner(latch), "two");
Thread three = new Thread(new Runner(latch), "three");
// Starting all the threads
one.start(); two.start(); three.start();
}
Klasse Runner implementiert Runnable
CountDownLatch latch;
public Runner(CountDownLatch latch) {
this.latch = latch;
}
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+" is Waiting.");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
latch.countDown();
System.out.println(Thread.currentThread().getName()+" is Completed.");
}
OUTPUT zwei wartet. drei wartet. man wartet. Eins ist abgeschlossen. Zwei ist abgeschlossen. drei ist abgeschlossen.
Danke Zbynek für die schnelle Antwort. Bedeutet das, dass mehrere Countdowns aus demselben Thread als eins betrachtet werden? – NewToJava
@hungry: Nein. Jeder Countdown zählt, egal ob aus demselben Thread. Es weiß eigentlich gar nichts über Thread. –