я следующая часть кода:Выясните, если потоки по-прежнему работает в Threadpool
protected ExecutorService parallelExecutor = Executors.newCachedThreadPool();
protected ExecutorService serialExecutor = Executors.newSingleThreadExecutor();
List<?> parallelCommands = new ArrayList<?>();
List<?> serialCommands = new ArrayList<?>();
List<Future<Boolean>> results = null;
LocalDateTime timed = LocalDateTime.now().plusSeconds(60);
results = parallelExecutor.invokeAll(parallelCommands);
results.addAll(serialExecutor.invokeAll(serialCommands));
Теперь я хотел бы проверить, если оба исполнители закончить свою работу в течение тайм-аута или нет:
while (LocalDateTime.now().isBefore(timed)) {
\\ here I need to check if meanwhile my threads finished
\\ if yes, break;}
Как проверить, завершили ли исполнители свою работу?
Позвоните 'get' на фьючерсы. Готовые возвращаются немедленно. 'get' также можно вызвать с настройкой тайм-аута: https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html#get-long-java.util.concurrent .TimeUnit- – Fildor
Также может возникнуть причудливый способ сделать это с помощью CompleteableFuture ... – Fildor