private void parallelExecution()

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);
  }