Saber quando uma classe é finalizada!

9 respostas
Grinvon

Estou com o seguinte problema. Preciso saber quando uma determinada classe do projeto é finalizada, sendo assim executarei automaticamente um outro método de outra classe! Como posso verificar isso?

9 Respostas

kuchma

O metodo finalize() da classe java.lang.Object eh acionado quando antes da classe ser coletada pelo GC - porem sua execucao nao eh garantida. Se isso for critico para voce, ficara complicado.

Marcio Kuchma

pcalcado

Você pode executar código quando o bojeto for removido pelo Garbage Collector com o método finalize, mas você não tem controle de quando ele é chamado.

[]s

Grinvon

Exato amigos.

Eu tinha feito bem antes uma sobrecarga do método finalize dentro da classe. Porém ele nunca chama esse método

jgbt

vc precisa saber quando a classe termina de executar ou quando ela é coletada pelo gc???
se for a segunda opção, vc não tem como saber isso, sobrescrever o metodo finalize não garante que o metodo vai ser executado.
se for a primeira opção, ai é so controlar via programção, não acho que seja muito complicado.

mais uma pergunta, pq vc precisa disso, não tem como mudar sua implementação??

[]'s

Grinvon

jgbt:
vc precisa saber quando a classe termina de executar ou quando ela é coletada pelo gc???
se for a segunda opção, vc não tem como saber isso, sobrescrever o metodo finalize não garante que o metodo vai ser executado.
se for a primeira opção, ai é so controlar via programção, não acho que seja muito complicado.

mais uma pergunta, pq vc precisa disso, não tem como mudar sua implementação??

[]'s

É uma classe que controlará um serviço de LPDA. Eu preciso saber quando ele é terminada, mas não coletedada pelo GC.

Fiz o uso de instance e também do finalize, porém não tive resultado :?

jgbt

então, vc não consegue controlar pelos metodos que estão sendo chamados??
se mais nenhum metodo da classe estiver exeuctando, é porque ela finalizou o seu processamento.
isso não serve???

[]'s

Grinvon

Eu criei duas classes hipoteticas aqui. TesteA e TesteB, criei uma instância de B em A. Sendo que fiz overload do método finalize() em B.

Meu objetivo era que, independente de como a classe B fosse terminada, independente de qual fosse o seu último método executado, ela executaria o método finalize exibindo assim portanto uma informação, pórém isso não ocorreu. :cry:

C
O que vc quer dizer com ''a classe terminar de executar" ??
  Classes não executam, mas sim seus métodos.  Quando 'finalize' é chamado ( e nem sempre é ) é por que não existem mais referencias àquela instancia.
   
  Defina melhor o que vc quer fazer, pois ainda não consegui entender.
louds

“quando a classe é terminada”, sou só eu que não entendi oque viria a ser isso.

Voce está falando de:

1)Classes
2)Objetos, aka instancias de classes

Em Java o desenvolvedor é responsavel por saber o ciclo de vida dos objetos. Não existe ajuda do ambiente para isso.

Criado 13 de janeiro de 2005
Ultima resposta 13 de jan. de 2005
Respostas 9
Participantes 6