CountDownLatch#

Функциональность IgniteCountDownLatch похожа на java.util.concurrent.CountDownLatch и позволяет синхронизировать операции между узлами кластера.

Пример, как создать распределенный CountDownLatch:

Java#
Ignite ignite = Ignition.start();

IgniteCountDownLatch latch = ignite.countDownLatch("latchName", // Название `IgniteCountDownLatch`.
        10, // Начальный отсчет.
        false, // Автоматическое удаление, когда счетчик достигнет нуля.
        true // Создайте, если его не существует.
);

После выполнения кода выше все узлы в указанном кеше смогут синхронизироваться с «замком» latchName.

Пример синхронизации:

Java#
Ignite ignite = Ignition.start();

final IgniteCountDownLatch latch = ignite.countDownLatch("latchName", 10, false, true);

// Выполнение заданий.
for (int i = 0; i < 10; i++)
    // Выполните задание на удаленном узле кластера.
    ignite.compute().run(() -> {
        int newCnt = latch.countDown();

        System.out.println("Counted down: newCnt=" + newCnt);
    });

// Ожидайте окончания выполнения всех работ.
latch.await();