/ / Aguarde a thread estar disponível no pool de threads em java - java, threadpool, executorservice

Aguarde o encadeamento estar disponível no conjunto de encadeamentos em java - java, threadpool, executorservice

Estou usando executorservice para pool de threads emJAVA. Existe uma maneira em que posso esperar que o thread esteja disponível no pool de threads no serviço executor e só continue somente quando houver threads disponíveis no pool

Respostas:

0 para resposta № 1

O ponto principal de ter um ExecutorService não é o cuidado com o manuseio de encadeamentos, portanto, você deve evitar fazer isso, a menos que tenha um motivo muito específico para acompanhar o status deles.

Além disso, você pode adicionar qualquer número de tarefas ao pool e o executor executará todas elas.

Por exemplo:

final List<Callable<Boolean>> tasks = new ArrayList<>(10);
for (int i=0;i<10;i++) tasks.add(()->{
//something time consuming
return true;
});

final ExecutorService executor = Executors.newFixedThreadPool(5);
List<Future<Boolean> handles = executor.invokeAll(tasks);

for (Future<Boolean> handle : handles) {
handle.get();
}

// here all the 10 tasks have been completed by the 5 thread pool

Observe que toda vez que uma chamada para handle.get () retorna, um encadeamento no conjunto está teoricamente disponível, mas será instantaneamente reutilizado pelo executor para executar a próxima tarefa em espera.