Обработка списка с помощью ExecutorService и возвращение CompletableFuture

подскажите пож есть ли возможность обработать список и вернуть CompletableFuture

Сейчас код выглядит вот так

  public ApiResponse<Queue<NotValidRow>>
  readReceiveCSV(HttpServletRequest request) throws IOException {

    CsvParserSettings settings = new CsvParserSettings();
    settings.setHeaderExtractionEnabled(false);
    settings.setSkipEmptyLines(true);
    settings.setMaxColumns(2);
    CsvParser parser = new CsvParser(settings);
    Iterator<String[]>iterator=parser.iterate(request.getInputStream()).iterator();
    var splitIterator= Spliterators.spliteratorUnknownSize(iterator,0);
    var notValidQueue = new ConcurrentLinkedQueue<NotValidRow>();
    var list= StreamSupport.stream(splitIterator,true)
          .filter(row -> {
            if (row[0] == null || !SKIP_PATTERN.matcher(row[0]).matches()) {
              notValidQueue.offer(new NotValidRow(row[0], row[1], NotValidRowReason.NOT_VALID_EMAIL));
              return false;
            }
            if (row[1] == null || row[1].isBlank()) {
              notValidQueue.offer(new NotValidRow(row[0], row[1], NotValidRowReason.EMPTY_NAME));

   return new ApiResponse<>(notValidQueue);
  }

тут все хорошо кроме одного - валидация значений занимает около 30 сек - это очень долго - я хочу попробовать не параллельный stream ,а executorservise с нужным количеством потоков и вернуть CompetableFuture.НО не пойму как это изобразить в коде. Может кто то помочь мне с этим пож?


Ответы (0 шт):