in ddm-notification-service/src/main/java/com/epam/digital/data/platform/notification/facade/UserNotificationFacade.java [166:179]
private <T> void parallelExecution(int poolSize, Collection<T> objects, Consumer<T> consumer) {
if (CollectionUtils.isEmpty(objects)) {
return;
}
var threadPoolSize = Math.min(objects.size(), poolSize);
var executorService = Executors.newFixedThreadPool(threadPoolSize);
var tasks = objects.stream()
.map(object -> (Callable<Void>) new MDCWrappedCallable((Callable<Void>) () -> {
consumer.accept(object);
return null;
})).collect(Collectors.toList());
executorService.invokeAll(tasks).forEach(this::getFuture);
}