Завершаемое будущее с Executor только для обработки исключенийJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Завершаемое будущее с Executor только для обработки исключений

Сообщение Anonymous »

Существует список объектов List fooDetails, который я буду использовать для создания запроса Bar, соответствующего каждому элементу fooDetails из базы данных, а затем выполню вызов шаблона rest .

Код: Выделить всё

public void startProcess(List fooDetails) throws Exception {

List futures = fooDetails.stream()
.map(this::processFoo)
.collect(Collectors.toList());

List failedFooPushList = futures.stream()
.map(future -> {
try {
return future.get();  // Returns null if successful for that store
} catch (Exception e) {
return null;
}
})
.filter(Objects::nonNull)  // Filter failed (non-null) results
.collect(Collectors.toList());

if (!failedFooPushList.isEmpty()) {
throw new SyncException("Foo failed for foo details: {}" + failedFooPushList);
}
}

private CompletableFuture processFoo(Foo fooDetail) {
return CompletableFuture.supplyAsync(() -> {
try {
Bar request = barService.createBarFromDB(
Collections.singletonList(foodetail));

boolean barPushFailed = booleanResponseClient.updateBar(request);

if (barPushFailed) {
return fooDetail.getName();
}

return null;  // Return null to indicate success
} catch (Exception ex) {
return fooDetail.getName();
}
});
}
Список может быть очень большим, и я полагаю, что мне следует использовать с ним ExecutorService. Я новичок в Java, и мне нужно знать, как получить список всех имен из списка List fooDetails, который вызвал исключение потокобезопасным способом?

Подробнее здесь: https://stackoverflow.com/questions/791 ... tions-only
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»