Где использовать барьерный рисунок в Java?

Я только что прочитал Javadoc о Phaser там и есть вопрос об использовании этого класса. Javadoc предоставляет образец, но как насчет реального примера? Где такой барьер реализации может быть полезен на практике?

1 ответ

Я не пользовалась Phaser, но я использовал CountDownLatch, Справочные документы говорят:

[Phaser похож по функциональности на... CountDownLatch но поддерживает более гибкое использование.

CountDownLatch полезен везде, где вы запускаете несколько потоков для выполнения некоторых задач, а в старой школе вы бы использовали Thread.join() ждать, пока они закончат.


Например:

Старая школа:

Thread t1 = new Thread("one");
Thread t2 = new Thread("two");

t1.start();
t2.start();    

t1.join();
t2.join();
System.out.println("Both threads have finished");

С помощьюCountDownLatch

public class MyRunnable implement Runnable {
    private final CountDownLatch c;  // Set this in constructor

    public void run() {
        try {
            // Do Stuff ....
        } finally {
            c.countDown();
        }
    }
}

CountDownLatch c = new CountDownLatch(2);

executorService.submit(new MyRunnable("one", c));
executorService.submit(new MyRunnable("two", c));

c.await();
System.out.println("Both threads have finished");
Другие вопросы по тегам