Существующий поток для одиночного асинхронного вызова выглядит следующим образом: Выполните вызов внутренней службе Java, которая отправляет вызов на основе сообщения.На этом этапе этот процесс завершен.
Реализован шаблон наблюдателя, который вызывается, когда ответ (на основе сообщений) возвращается в службу java.Вызван метод onResponse, и должно произойти завершение ответа.
Отредактировано, чтобы дать больше подробностей: я проверил с CountDownLatch и Phaser, чтобы оба этих сценария работали, где мой основной поток отвечает за порождение параллелипоток асинхронного вызова.Параллельный поток завершается, и основной поток ожидает уведомления о получении ответа от асинхронного вызова.Если ответ означает успех, перейдите к следующему параллельному вызову и т. Д.Вот пример Phaser, который работал хорошо.Вопрос в том, нахожусь ли я на правильном пути, или есть что-то более легкое / лучшее?
main thread:
new Phaser(1);
for (iteration of number of request objects received){
create new thread, call serviceMethod.
phaser.arriveAndAwaitAdvance; //waits for arrival of registered party
if phaser.isTerminated
stop processing this request;
}
serviceMethod(){
phaser.register
perform call
}
onResponse(){
if SUCCESS
phaser.arriveAndDeregister(); //main thread should continue on to
next call
else
phaser.forceTermination
}