2016-03-03 3 views
0

У меня есть коллекция объектов. Мне нужно вызвать метод в этих коллекциях объектов, который возвращает «Будущее». Прямо сейчас я использую get() в Будущем, чтобы он делал операцию синхронной. Как преобразовать его в Async?Вызов операции Async для коллекции

for (Summary summary : summaries) { 
    acmResponseFuture(summary.getClassification())); 
    String classification = summary.getClassification(); 
    // this is a call which return Future and which is a sync call now 
    AcmResponse acmResponse = acmResponseFuture(classification).get(); 
    if (acmResponse != null && acmResponse.getAcmInfo() != null) { 
     summary.setAcm(mapper.readValue(acmResponse.getAcmInfo().getAcm(), Object.class)); 

    } 
    summary.setDataType(DATA_TYPE); 
    summary.setApplication(NAME); 
    summary.setId(summary.getEntityId()); 
    summary.setApiRef(federatorConfig.getqApiRefUrl() + summary.getEntityId()); 
} 
+0

Почему это будущее? –

+0

его внешний API мы его не контролируем. Обычно нам нужно передать только одну запись, но в этом случае мы можем передать коллекцию – allthenutsandbolts

ответ

0

Как о сборе всех Future случаях, прежде чем ожидание синхронного вызова?

Очевидно, что вам нужно будет разобраться с обновлением сводок; но идея заключается в том, что вы хотите, чтобы все фьючерсы сразу, прежде чем обращаться к ним. Поместите фьючерсы & резюме на карту ...

+0

Как это отличается от исходного кода? Мне нужно избегать будущего и использовать некоторые функции Async. – allthenutsandbolts

+0

Предположительно 'acmResponseFuture (классификация)' запускает работу async. 'Future.get()' просто ждет завершения этой работы. – jaco0646

Смежные вопросы