У меня есть следующая программа, где я использую java.util.concurrent.CountDownLatch и не используя метод wait(), который работает нормально. Я новичок в параллелизме и хочу узнать цель ожидания(). В «CyclicBarrier» я могу понять, зачем ждать(), но почему в «CountDownLatch»?Какова цель wait() в CountDownLatch?
Программа,
класс 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();
}
класс Runner реализует 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 два ждет. три - ожидание. один ждем. один выполнен. два завершены. три завершены.
Спасибо Zbynek за быстрый ответ. Значит ли это, что несколько обратных отсчетов из одного потока будут считаться одним? – NewToJava
@hungry: Нет. Каждый отсчет отсчитывается, независимо от того, является ли он одним и тем же. На самом деле ничего не известно о потоке. –