Если вы заранее знаете количество сообщений, которыми обмениваются актеры, вы можете использовать java.util.concurrent.CountDownLatch
для отслеживания количества сообщений. В актерах после каждой обработки сообщения делай
latch.countDown()
и в своей основной теме делай
latch.await()
Это заставит ваш главный поток подождать, пока счетчик защелки не уменьшится до нуля.
Если вы не знаете заранее количество сообщений, но у вас есть условие, которое указывает на финиш, вы можете использовать java.util.concurrent.locks.Condition
. В актерах, когда ваше состояние выполнено, выполните
if (conditionSatisfied)
condition.signal()
и в своей основной теме делайте
while (!conditionSatisfied)
condition.await()
чтобы он дождался выполнения условия.
Подробнее см. В javadocs CountDownLatch
и Condition
.
См. этот Gist для примера использования Condition
.