Concorrencia entre threads

1 resposta
S

Olá estou tendo problema entre a execução entre varias threads, acredito eu que seja problema de concorrencia entre elas mas não tenho certeza.
Possuo quatro threads

gerente, trabalhador, tarefa e gerenteResposta

Tudo está ocorrendo bem o problema está quando a thread gerenteResposta é ativada, especificamente quando ela chama o metodo getTarefa, o processamento da maquina vai a 100% e nada é retornado. Em um post enviado a alguns dias atrás ao forum me informaram para colocar um sleep em cada thread para solucionar o problema de processamento em 100%, isso resolveu, mas ele volta a 100% quando executa o metodo getTarefa.

Talvez esteja enganado, mas pode ser problema de concorrencia entre Threas? Como posso resolver isso? LinkedBlockQueue?

Somente um comentário, é necessário possuir uma lista de tarefas enviadas, pois o gerente necessita saber quantas tarefas ele enviou, e após o gerenteResposta receber uma resposta ele deve procurar na lista de tarefas enviadas a tarefa correspondente à tarefa que ele recebeu.

VLW.

1 Resposta

ViniGodoy

Sempre que o processador vai a 100% significa que você está rodando algum loop, que não tem nenhuma operação de I/O e nenhum comando que mande a thread dormir explicitamente. Esse é o caso do seu método getTarefa() que roda incessamente a verificação se existe uma tarefa ou não.

Para resolver o problema, simplesmente coloque um Thread.sleep(200); dentro do for. Isso fará com que a thread verifique uma nova tarefa a cada 0,2 segundos ao invés de tão intensamente.

Criado 24 de julho de 2010
Ultima resposta 24 de jul. de 2010
Respostas 1
Participantes 2