Динамическое отображение ответа от сервера

Я отправляю запрос на несколько серверов параллельно, но их ответы не приходят одновременно. Я должен показать ответ на странице html. Один из способов — дождаться всех ответов и, когда все ответы поступят, показать их. Что я хочу сделать, так это показать ответ, как только он придет, и не ждать других ответов. Грубый алгоритм выглядит так:

while(all the responses don't come or timeout occurs)
    waitForResponse();
    if(responseArrived==true){
         //put it on html page
    }
}

Как я могу сделать это в java?


person Vivek Mangal    schedule 15.02.2017    source источник


Ответы (1)


Похоже, вы ищете Фьючерсы. Они позволяют вам создать параллельную задачу, которая займет все время, необходимое для ее выполнения, и имеют метод get, который вернет null, если задача еще не выполнена, поэтому вы можете написать что-то вроде

while(!future.isDone()){
  Thread.sleep(1000);
}

И после выхода из цикла получите свое значение с помощью future.get();

Это еще не все, поэтому ознакомьтесь с эта статья, она небольшая, но точно соответствует тому, что вы просите

person Dmytro Grynets    schedule 15.02.2017
comment
Хотя теоретически это может ответить на вопрос, было бы предпочтительнее включить сюда основные части ответа и предоставить ссылку для справки. . - person OneCricketeer; 15.02.2017