| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 16:03:51
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
Tem como pegar a instancia de uma classe que já está rodando?
Por que no meu aplicativo eu só posso inicializa uma classe uma única vez e queria saber também se tem como "matar" esta instancia que esta rodando?
This message was edited 1 time. Last update was at 15/07/2008 16:04:44
|
www.bau-de-dev.com |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 16:08:41
|
peczenyj
Moderador
![[Avatar]](/images/avatar/299dc35e747eb77177d9cea10a802da2.jpg)
Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline
|
Vc pode passar null para todas as referências daquele objeto e esperar o garbage collector.
Entretanto acho q no seu caso tem alguma coisa mal explicada...
|
http://pacman.blog.br
'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.' |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 16:12:05
|
BrunoCarlo
Virtual Machine Man
Membro desde: 25/11/2004 10:50:06
Mensagens: 633
Localização: Rio de Janeiro
Offline
|
Ola,
Dê uma olhada no padrão singleton.. dae fica facil matar ela.
|
Evoluir é preciso
Sempre bom olhar-API |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 16:17:21
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20581
Localização: Curitiba/PR
Offline
|
BrunoCarlo wrote:Dê uma olhada no padrão singleton.. dae fica facil matar ela.
Hã? É justamente o contrário!
O Singleton não funciona bem em Java. É difícil garantir que o objeto seja realmente singleton.
E, graças ao Garbage Collector, é praticamente impossível matar um Singleton em Java.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 16:21:53
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
Concordo ficou meio confuso...
O aplicativo funciona desta maneira, o usuário pode inicializar um processo, que no meu caso é esta classe que só pode ser inicializada uma única vez, esta classe fica rodando direto, não para, se o usuário fechar o browser e abrir novamente o aplicativo tem que indicar que a classe ainda está rodando.
O usuário também tem a possibilidade de parar o processo, por isso eu preciso pegar a instância da classe.
|
www.bau-de-dev.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 16:21:56
|
BrunoCarlo
Virtual Machine Man
Membro desde: 25/11/2004 10:50:06
Mensagens: 633
Localização: Rio de Janeiro
Offline
|
ViniGodoy wrote:
BrunoCarlo wrote:Dê uma olhada no padrão singleton.. dae fica facil matar ela.
Hã? É justamente o contrário!
O Singleton não funciona bem em Java. É difícil garantir que o objeto seja realmente singleton.
E, graças ao Garbage Collector, é praticamente impossível matar um Singleton em Java.
Haaa... concordo não...
Se vc usar um analisador de memoria vera que esta classe saira quando se chamar o killMyself dela. e depois do GC..
|
Evoluir é preciso
Sempre bom olhar-API |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 16:26:54
|
BrunoCarlo
Virtual Machine Man
Membro desde: 25/11/2004 10:50:06
Mensagens: 633
Localização: Rio de Janeiro
Offline
|
Jedi_FeniX wrote:Concordo ficou meio confuso...
O aplicativo funciona desta maneira, o usuário pode inicializar um processo, que no meu caso é esta classe que só pode ser inicializada uma única vez, esta classe fica rodando direto, não para, se o usuário fechar o browser e abrir novamente o aplicativo tem que indicar que a classe ainda está rodando.
O usuário também tem a possibilidade de parar o processo, por isso eu preciso pegar a instância da classe.
Pois é, pra min se isto não é um singleton...
Dá uma olhada no que é este singleton: http://pt.wikipedia.org/wiki/Singleton
|
Evoluir é preciso
Sempre bom olhar-API |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 16:44:35
|
eclipso
JavaEvangelist
Membro desde: 07/12/2006 12:57:04
Mensagens: 446
Offline
|
Este seu aplicativo seria o que exatamente? Uma thread? Um aplicativo desktop stand-alone? Um aplicativo desktop cliente-servidor?
Você fala dessa classe como se ela fosse algo dissociado do seu aplicativo. Porque diz "quando fechar" e "quando iniciar o aplicativo", e em seguida diz que independente de fechar ou reiniciar o aplicativo a classe deve ficar "rodando"...
Daria pra resolver relativamente fácil adotando a arquitetura cliente-servidor, mas não sei exatamente qual é a natureza da aplicação...
Abraço...
|
CV: http://lattes.cnpq.br/0044387433155250 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 16:45:18
|
eclipso
JavaEvangelist
Membro desde: 07/12/2006 12:57:04
Mensagens: 446
Offline
|
Singleton em Java é um pepino porque pode sempre ser burlado usando reflection...
|
CV: http://lattes.cnpq.br/0044387433155250 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 16:45:28
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20581
Localização: Curitiba/PR
Offline
|
BrunoCarlo wrote:Se vc usar um analisador de memoria vera que esta classe saira quando se chamar o killMyself dela. e depois do GC..
Negativo. Esse é um bom exemplo de como se pode quebrar o padrão Singleton. Certa vez, até escrevi um artigo exatamente com esse assunto. O usuário pode fazer: E assim por diante...
This message was edited 1 time. Last update was at 15/07/2008 16:47:42
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 16:46:35
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20581
Localização: Curitiba/PR
Offline
|
eclipso wrote:Singleton em Java é um pepino porque pode sempre ser burlado usando reflection...
Se você levar reflection em conta, tudo pode ser burlado. Não existem padrões.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 16:55:03
|
BrunoCarlo
Virtual Machine Man
Membro desde: 25/11/2004 10:50:06
Mensagens: 633
Localização: Rio de Janeiro
Offline
|
ViniGodoy wrote:
BrunoCarlo wrote:Se vc usar um analisador de memoria vera que esta classe saira quando se chamar o killMyself dela. e depois do GC..
Negativo. Esse é um bom exemplo de como se pode quebrar o padrão Singleton.
Certa vez, até escrevi um artigo exatamente com esse assunto.
O usuário pode fazer:
E assim por diante...
Faz sentido....
ViniGodoy wrote:
eclipso wrote:Singleton em Java é um pepino porque pode sempre ser burlado usando reflection...
Se você levar reflection em conta, tudo pode ser burlado. Não existem padrões.
Tb faz sentido... reflection é uma quebra de padrões terrível.. mas as vezes necessário.
|
Evoluir é preciso
Sempre bom olhar-API |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 17:02:05
|
humberto.lima
Debugger
Membro desde: 18/12/2006 20:16:25
Mensagens: 58
Offline
|
Parece que a pergunta foi esquecida...
Mas retomando, pelo que entendi o que voce que é guardar algum objeto scopo "application", nao seria isso?
[]´s
Humberto
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 17:09:08
|
fredferrao
GUJ Master
![[Avatar]](/images/avatar/128ac9c427302b7a64314fc4593430b2.jpeg)
Membro desde: 01/06/2005 13:23:32
Mensagens: 1901
Localização: Brasil
Offline
|
ViniGodoy wrote:
BrunoCarlo wrote:Se vc usar um analisador de memoria vera que esta classe saira quando se chamar o killMyself dela. e depois do GC..
Negativo. Esse é um bom exemplo de como se pode quebrar o padrão Singleton.
Certa vez, até escrevi um artigo exatamente com esse assunto.
O usuário pode fazer:
E assim por diante...
Blz entao apague o metodo killMySelf, que resolve o problema.
|
Não respondo dúvidas via MP! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 18:11:01
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20581
Localização: Curitiba/PR
Offline
|
fredferrao wrote:Blz entao apague o metodo killMySelf, que resolve o problema.
Sim, e não se apaga mais o Singleton...
como eu falei desde o início.
Você só consegue apagar o Singleton usando a classe WeakReference. Assim você consegue garantir que não há referências fortes externamente, como a que eu fiz ali.
Mas ainda assim, com Singleton ou sem Singleton, é praticamente impossível "matar" uma instância.
This message was edited 1 time. Last update was at 15/07/2008 18:16:32
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
|
|