Agente morre inexplicavelmente durante execução do código

Boa noite senhores(as)!

Para que saibam, sou iniciante em Java e estou trabalhando com um aplicativo multiagentes e multithreads. Ahhh… E uso o Netbeans versão 6.7.1.

Resumidamente, estou com o seguinte problema:

Tenho 2 agentes diferentes, sendo executados em threads diferentes. Repentinamente um deles pára indevidamente. Pude constatar a parada através de um breakpoint colocado no método finalize do mesmo.

Bem, ao parar no breakpoint, verifiquei a “Pilha de Chamadas” e pude constatar que a chamada do método finalize é proveniente de classes internas do próprio Java.

Utilizei também o recurso de “Hierarquia de Chamadas” sobre o método finalize, porém, não me foi retornado nada, ou seja, nenhum outro método do software faz chamada ao método finalize.

O que me levou a crer que talvez seja o próprio Garbage Colector da linguagem que está eliminando o Agente.

Gostaria de uma ajuda, dos senhores experientes na linguagem, no seguinte:

[list]Como proceder nesta situação, pois, o código é extenso e por serem várias threads rodando “simultaneamente” não é tão simples de depurar![/list]
[list]Se nenhum método criado no software chama diretamente o método finalize, quais outros motivos poderiam levar a linguagem a promover a finalização do agente?[/list]

Se alguém puder dar uma luz neste problema, serei muitíssimo grato!

Desde já agradeço a todos pela atenção dispensada,

Edwar Saliba Júnior

Olá!

Verifique se o loop principal da sua thread foi encerrado, ou por um erro de lógica ou alguma exceção que foi lançada e você não capturou.

Abraços

verifique se o método run da sua thread chega ao final (se você quer que sua thread não finalize, isso não pode acontecer)

gostei do título da dúvida…

fiquei tentando imaginar o que seria um “Agente” que morreu executando um código… :XD:

nisso que dá vir pro GUJ às 8 da manhã… hehehe

[quote=walacy]gostei do título da dúvida…

fiquei tentando imaginar o que seria um “Agente” que morreu executando um código… :XD:

nisso que dá vir pro GUJ às 8 da manhã… hehehe[/quote]

Poís é até achei que era noticia :stuck_out_tongue:

Bom dia.

Realmente muito interessante o titulo do tópico.

Quanto a dúvida, quem chama o método finalize de uma classe é o garbage collector, então seu agente ficou elegivel para a coleção de lixo. Verifique se todas as referencias para seu agente não foram perdidas.

Carlos

[quote=Felagund][quote=walacy]gostei do título da dúvida…

fiquei tentando imaginar o que seria um “Agente” que morreu executando um código… :XD:

nisso que dá vir pro GUJ às 8 da manhã… hehehe[/quote]

Poís é até achei que era noticia :P[/quote]

cheguei a pensar que fosse algum tipo de piada que ele recebeu uma TchuckNorrisException na cara… :lol: