У меня есть программа на Java, которая выполняет некоторые вычисления параллельно. Я могу запустить его на одной машине или на нескольких разных машинах.
При выполнении на одном компьютере синхронизация потоков успешно достигается с помощью класса CyclicBarrier из пакета java.util.concurrent.CyclicBarrier. Идея состоит в том, что все потоки должны ждать, пока другие потоки прибудут в ту же точку, прежде чем продолжить вычисления.
При выполнении на нескольких разных машинах межпроцессное взаимодействие реализуется через RMI (удаленный вызов метода). У меня та же проблема в этой ситуации, и я хочу, чтобы потоки этих процессов ждали, пока другие не прибудут в ту же точку, прежде чем продолжить. Я не могу использовать общий объект CyclicBarrier между различными процессами, потому что этот класс не сериализуем.
Каковы мои альтернативы для получения этого поведения барьера в потоках, выполняющихся в разных процессах на нескольких машинах?
Спасибо
AtomicNumber
для подсчета прибывших партий. - person Andrey Chaschev   schedule 29.11.2013