[Threads] Qual a diferença/vantagem?

3 respostas
E

Qual a diferença entre eu usar a classe ThreadPoolExecutor ou criar várias threads manualmente (dentro de um for por exemplo)? Qual dos dois eu devo usar para monitorar e capturar dados de 50 sockets por exemplo?

3 Respostas

S

O ThreadPool permite reaproveitar Threads, que é um recurso caro. Se você for processar muitas tarefas usando Threads, criar e fechar dezenas de Threads o tempo todo pode ser muito custoso. O ThreadPool te ajuda a manter um número X de Threads disponíveis e você vai submetendo tarefas (idealmente pequenas) para ele executar. Ele vai processando as tarefas reaproveitando sempre as mesmas threads iniciais.

Um exemplo clássico de uso são em servidores Web que precisam tratar Requests Web em Threads separadas. Mantém-se um ThreadPool e cada Request é enviado lá para execução. Seria muito ruim criar uma Thread nova sempre que um request chegasse.

E

Obrigado.

E

No caso específico de sockets (em que os dados podem ser processados por menos threads que sockets), é melhor usar sockets assíncronos (procure por SocketChannel.). Entretanto, é mais complicado trabalhar com eles que usar 1 thread por soecket.

Criado 21 de julho de 2010
Ultima resposta 22 de jul. de 2010
Respostas 3
Participantes 3