Um pool de threads é um grupo de threads reutilizáveis pré-instanciados que estão disponíveis para executar tarefas. Quando uma tarefa é enviada, ela é atribuída a um thread inativo no pool. Se todos os threads estiverem ocupados, a tarefa aguardará em uma fila até que um thread fique disponível.
Os pools de threads oferecem diversas vantagens:
Quando você envia uma tarefa para um pool de threads, ocorrem as seguintes etapas:
Os pools de threads são particularmente úteis em cenários em que você precisa gerenciar um grande número de tarefas de curta duração, como lidar com solicitações em um servidor web ou processar um lote de trabalhos.
Java fornece várias implementações de pool de threads integradas no pacote java.util.concurrent, sendo o mais comumente usado ExecutorService. Vamos explorar como criar e usar um pool de threads em Java.
Para criar um pool de threads em Java, você pode usar a classe Executors, que fornece vários métodos para criar diferentes tipos de pools de threads.
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ThreadPoolExample { public static void main(String[] args) { // Create a fixed thread pool with 5 threads ExecutorService executorService = Executors.newFixedThreadPool(5); for (int i = 0; i2.2 Tipos de pools de threads
Java fornece vários tipos de pools de threads, cada um projetado para diferentes cenários:
Fixed Thread Pool : Cria um número fixo de threads. Se todos os threads estiverem ocupados, as tarefas serão enfileiradas.
ExecutorService fixedPool = Executors.newFixedThreadPool(10);Cached Thread Pool : Cria novos threads conforme necessário, mas reutiliza threads construídos anteriormente quando eles estão disponíveis. Adequado para executar muitas tarefas de curta duração.
ExecutorService cachedPool = Executors.newCachedThreadPool();Single Thread Executor: Cria um único thread de trabalho para executar tarefas sequencialmente.
ExecutorService singlePool = Executors.newSingleThreadExecutor();Scheduled Thread Pool: Cria um pool de threads que pode agendar comandos para serem executados após um determinado atraso ou periodicamente.
ScheduledExecutorService scheduledPool = Executors.newScheduledThreadPool(5);2.3 Exemplo: demonstração de pool de threads fixos
No exemplo fornecido, um pool de threads fixo com 5 threads é criado. Enviamos 10 tarefas para o pool. O pool atribui essas tarefas aos threads disponíveis. Se todos os threads estiverem ocupados, as tarefas aguardam na fila.
Resultado esperado:
Task 0 is being executed by pool-1-thread-1 Task 1 is being executed by pool-1-thread-2 Task 2 is being executed by pool-1-thread-3 Task 3 is being executed by pool-1-thread-4 Task 4 is being executed by pool-1-thread-5 Task 5 is being executed by pool-1-thread-1 Task 6 is being executed by pool-1-thread-2 Task 7 is being executed by pool-1-thread-3 Task 8 is being executed by pool-1-thread-4 Task 9 is being executed by pool-1-thread-52.4 Melhores práticas para usar pools de threads
Os pools de threads em Java oferecem uma maneira robusta de gerenciar e executar tarefas com eficiência. Ao reutilizar um conjunto fixo de threads, eles reduzem a sobrecarga e melhoram o desempenho de aplicativos multithread. Esteja você processando solicitações da Web, executando tarefas em segundo plano ou executando cálculos paralelos, os pools de threads são uma ferramenta essencial em seu kit de ferramentas de simultaneidade Java.
Tem dúvidas? Deixe-os nos comentários abaixo!
Leia mais postagens em: Java Thread Pool: Como gerenciar threads com eficiência
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3