При выполнении одновременных тестов (изучение параллелизма) класс, который предполагает вычисление результата поиска, не возвращается во время вызова 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
и по какой-то причине он не возвращается при запуске тестов.