olá …
estou com um problema de CPU100% quando executo várias threads ao mesmo tempo. A situação é a seguinte, possuo três classes um lançador, gerente e trabalhador, cada uma dessas três classes possui uma thread. Quando executo essa minha aplicação o processamento da minha máquina vai a 100% e não estou conseguindo achar o problema ou porque isso está ocorrendo.
Acredito que talvez seja um problema de iniciante em java mas alguém pode me auxiliar nesse problema???
vlws. T+
Tente usar o JConsole, a Visual JVM ou o profiler de sua preferencia para verificar o que está acontecendo, assim do nada fica meio difícil palpitar…
O que estas threads fazem? São recriadas a todo momento? Sofrem ‘sleep’? Recriam Objetos? Entram em DeadLock?
Três threads não deveriam travar seu sistema…
Vamos encontrar o problema primeiro para então focar na solução
Lançador: Lê um aquivo. esse arquivo contem os gerentes, ou nós. com IP:PORTA. Após ler cria um objeto GERENTE.
Gerente: Após o lançador criar o gerente, o gerente cria um objeto trabalhador, ativa sua thread que fica aguardando uma resposta vinda do trabalhador. Essa thread é uma BlockingQueue, quando recebe um valor na fila mostra o valor.
Trabalhador: Quando o gerente cria este, é criado uma thread que fica aguardando uma tarefa para executar. A thread desse também cria uma BlockingQueue.
Todo o processo funciona assim entao: o lançador le o arquivo e cria um gerente. Esse cria um trabalhador. Após tudo criado o gerente envia uma tarefa para o trabalhador, essa tarefa cai na fila BlockingQueue. O traalhador processa e envia a resposta para o gerente, onde cai na sua BlockingQueue.
Nenhum deadlock detectado?
Tipo, o gerente aguandando a resposta do trabalhador, enquanto o trabalhador aguarda uma tarefa para executar.
Verifique a presença de deadlocks com o JConsole, ele vem por padrão na jdk e é suficientemente intuitivo.
Achei um deadlock. Muito obrigado pela dica.
VLW.