Junior — Middle
Como implementar a multithreading para processar um grande volume de tarefas, por exemplo, 10 000 tarefas?
sobes.tech IA
Resposta da IA
Para processar um grande volume de tarefas (por exemplo, 10.000 tarefas), em Java, é eficiente usar um pool de threads do java.util.concurrent.
Passos principais:
- Criar um
ExecutorServicecom um tamanho fixo ou dinâmico do pool de threads. - Enviar tarefas para execução através de
submit()ouexecute(). - Aguardar a conclusão de todas as tarefas e encerrar corretamente o pool.
Exemplo:
import java.util.concurrent.*;
public class TaskProcessor {
public static void main(String[] args) throws InterruptedException {
int numberOfTasks = 10000;
int poolSize = Runtime.getRuntime().availableProcessors();
ExecutorService executor = Executors.newFixedThreadPool(poolSize);
for (int i = 0; i < numberOfTasks; i++) {
final int taskId = i;
executor.submit(() -> {
// Processamento da tarefa
System.out.println("A processar tarefa " + taskId);
// ...
});
}
executor.shutdown();
executor.awaitTermination(1, TimeUnit.HOURS);
}
}
Este método permite usar eficientemente os recursos da CPU e gerir a quantidade de threads que estão a ser executadas simultaneamente, evitando criar threads em excesso, o que poderia diminuir o desempenho.