Проблема исполнителя службы с вызовами Python - PullRequest
1 голос
/ 12 мая 2019

При выполнении одновременных тестов (изучение параллелизма) класс, который предполагает вычисление результата поиска, не возвращается во время вызова Python.

Это происходит только тогда, когда я настраиваю тест, как показано ниже,и другие тесты (один запрос без служб-исполнителей и т. д.) завершаются без каких-либо проблем.

Что может вызвать эту проблему, учитывая настройки ниже?

  @Test
  public void concurrent() {

  CountDownLatch latch = new CountDownLatch(1);
  AtomicBoolean running = new AtomicBoolean();
  AtomicInteger overlaps = new AtomicInteger();

  int threads = 1;
  ExecutorService service =
  Executors.newFixedThreadPool(threads);

  Collection<Future<Integer>> futures =
    new ArrayList<>(threads);

  for (int t = 0; t < threads; ++t) {
    futures.add(
      service.submit(
        () -> {
          //  latch.await();
          if (running.get()) {
            overlaps.incrementAndGet();
          }
          running.set(true);
          FAEnvironmentSizeDescriptor sizeDesc = compute(payload);
          running.set(false);
          return null;
        }
      )
    );
  }
}

Вызов Python в классе довольно симпатиченстандартный:

pbExec = new ProcessExec(pb, output, stdin, true);

Также пробовал с Process и по какой-то причине он не возвращается при запуске тестов.

...