Как вызвать одну программу из другой в java и их синхронизирвать?
Есть основная программа "А", которая работает в несколько потоков. Есть программа "Б", которую я хочу запустить в каждом из потоков программы "А", но эти запуски происходят в разное время. У Программы "Б" один поток, по этому хочу, чтобы программа "Б" обрабатывала каждый вызов программы "А" по очереди, вприницпе допустимо запускать несколько поток в программе "Б", если это облегчит задачу, но эти потоки надо формировать динамически, в соответствии с вызовом данной программы из "А".
Как все это сделать?
Можно запустить программу "Б" из программы
"А" Runtime.getRuntime().exec, но ей параметры как передать, и уж тем более синхронизирвать я думаю не выйдет с помощью этого. Можно через консоль запускать программу "Б", и передавать ей параметры, но каким образом вызывать программу "Б" так, чтобы она не повторно запускалась, а вызывалась уже запущаная программа "Б" только с другими параметрами. В общем много мыслей, но не одной, как мне кажется верной.
Две программы необходимо, посколько в первой программе нельзя некоторые действия реализовать, т.к она написана немного не на java по этому некоторые библиотеки не доступны в ней.
Используйте какой-нибудь брокер очередей - RabbitMQ, ActiveMQ, Redis и т.п. Потоки программы А отправляют в очередь данные, поток программы Б получает их из очереди и обрабатывает.