Как я могу реализовать многоузловой барьер в Java?

Я создаю многоузловую (распределенную) экспериментальную установку на Java для академического проекта. Я использую скрипт для запуска приложения на всех узлах. После запуска приложения и запуска всех модулей эти узлы начинают некоторые операции с общими данными, распределенными по этим узлам. В настоящее время я установил задержку между моментом, когда все модули работают, и моментом, когда первая операция инициируется на отдельном узле. Хотя это, кажется, работает, я хотел бы иметь барьер, чтобы все узлы запускали свои модули и продвигались к барьеру. Как только все узлы перейдут к барьеру, они могут начать работу с общими данными.

Было бы здорово, если бы кто-нибудь объяснил, как это сделать, или хотя бы указал мне на нужную документацию. К вашему сведению, я бы предпочел по возможности избегать семафоров. В начале я знаю количество узлов, участвующих в эксперименте, поэтому эту информацию о #nodes можно использовать при настройке барьера.

Спасибо
Сачин


person Sachin    schedule 19.01.2014    source источник


Ответы (1)


Посмотрите на Хейзелкаст. Доступна реализация CyclicBarrier (я ее не тестировал). . Вы также можете использовать распределенную версию CountDownLatch< /а>.

person Andrey Chaschev    schedule 19.01.2014