Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Qual a resposta para dúvida do anterior?

1 resposta
solução!

Sim, é possível fazer funcionar o código com a configuração dos dois pools de threads, desde que seja feita corretamente.

Você criou dois pools de threads, pool1 e pool2, usando o Executors.newCachedThreadPool(). O newCachedThreadPool() é um pool de threads com tamanho dinâmico, o que significa que cria novas threads conforme necessário e reutiliza threads inativas quando disponíveis. É importante notar que o pool de threads não tem uma quantidade fixa de threads, como no caso do newFixedThreadPool(), por exemplo.

Você criou duas tarefas TarefaClienteEnviar e TarefaClienteReceber, que implementam a interface Runnable.

Você executou a tarefa TarefaClienteEnviar no pool1 usando pool1.execute(tarefaClienteEnviar);.

Você também executou a tarefa TarefaClienteReceber no pool2 usando pool2.execute(tarefaClienteReceber);.

A abordagem está correta, e as tarefas deveriam ser executadas em seus respectivos pools. No entanto, o erro de 'socket closed' pode ocorrer por diferentes motivos.

Alguns pontos a serem observados:

Verifique se o objeto socket está sendo criado e passado corretamente para as tarefas TarefaClienteEnviar e TarefaClienteReceber. É possível que o erro esteja relacionado ao objeto socket estar fechado antes de ser usado nas tarefas.

Verifique se a classe TarefaClienteEnviar ou TarefaClienteReceber está fechando o socket em algum momento durante a execução. Isso poderia explicar por que o erro 'socket closed' está ocorrendo.

Certifique-se de que o código dentro das tarefas esteja lidando corretamente com o fluxo de dados e fechando o socket de maneira adequada quando não for mais necessário.