Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

O comando fim não funciona corretamente no projeto final!

Talvez o comando fim nunca tenha sido implementado corretamente. Devido a presença de outros bugs. Porém descrevo o seguinte, no projeto final num simples cenário com o servidor rodando com um cliente, mesmo após o cliente dar o comando "fim" e terminar o servidor fica com a thread main rodando e não termina.

Ainda nesse cenário , ao comentar a chamada da função iniciarConsumidores() no construtor do Servidor o comando "fim" já consegue terminar a thread main do servidor . Então presumo que as threads consumidoras criadas ficam penduradas,ativas,referenciadas no pool.Ou qualquer outro termo correto/ mais adequado.

O creio que o comando "fim" implementado corretamente só deveria encerrar um servidor quando todos os clientes pedissem para o servidor terminar. Contudo não funciona corretamente nem com apenas um cliente, devido as threads consumidoras penduradas.

Alguma dica de como lidar melhor com essas threads consumidoras com o pool?

private void iniciarConsumidores() {
        int qtdCondumidores = 2;
        for (int i = 0; i < qtdCondumidores; i++) {
            TarefaConsumir tarefa = new TarefaConsumir(filaComandos);
            this.threadPool.execute(tarefa);
        }
    }

2 respostas

Oi Romullo,

isso é referente de qual aula?

abs, nico

boa tarde Nico,

E a partir da aula 7 do curso de Threads 2 , quando se faz uso das threads consumidoras.