Thread+JPA+Delete

2 respostas
leonardobhbr

Boa Tarde galera postei aqui no forum Dia 10/12 http://www.guj.com.br/posts/list/227487.java e desde entao estou tentando descobrir como resolvo este problema, ate q deu a luz e tirei a chamada do removeById da Thread que estava e coloquei na Thread Principal do programa e bingo a minha entidade foi removida.

Agora vem minhas duvidas:

Tem Alguma configuração sobre o tempo que uma thread possa durar para esperar um metodo ser processado, ou definir o tamanho de memoria que uma thread possa usar

Pelo que me parece a thread esta morrendo e cancelando o processo de deleção sem dar erro nenhum, isso pode proceder pois o metodo demora mais de 5 minutos ou por memoria que ao executa o metodo de deleção o meu programa vai de 100 megas para 250 de Ram

E como vou atualizar minha Tela Swing sendo que o processo não pode ficar em Thread?

2 Respostas

ViniGodoy
leonardobhbr:
Tem Alguma configuração sobre o tempo que uma thread possa durar para esperar um metodo ser processado, ou definir o tamanho de memoria que uma thread possa usar

Não.

leonardobhbr:
Pelo que me parece a thread esta morrendo e cancelando o processo de deleção sem dar erro nenhum, isso pode proceder pois o metodo demora mais de 5 minutos ou por memoria que ao executa o metodo de deleção o meu programa vai de 100 megas para 250 de Ram

Não, ela não morre antes do processamento terminar.

Quanto a memória, é possível. Mas o problema ocorreria também em outras threads, e você receberia um OutOfMemoryError. Sua aplicação usa algum parâmetro como -XMX na inicialização da sua VM?

Além disso, não é memória demais não? Talvez seja uma boa rodar um profiler, como o VisualVM, para identificar porque sua aplicação está consumindo tanto.

leonardobhbr:
E como vou atualizar minha Tela Swing sendo que o processo não pode ficar em Thread?
Use o comando:
EventQueue.invokeLater(
   new Runnable() {
      @Override
      public void run() {
         //Aqui vão os comandos de atualização de tela.
         //Esse runnable rodará na thread do Swing.
      }
   }
);

[/quote]

leonardobhbr

Obrigado ViniGodoy por responder

Quanto a memória, é possível. Mas o problema ocorreria também em outras threads, e você receberia um OutOfMemoryError. Sua aplicação usa algum parâmetro como -XMX na inicialização da sua VM?

Sim uso Xms256 e Xmx1024

Sobre

Minha memoria aumenta quando eu mando excluir minha entidade pelo metodo remove, por tanto porvavelmente nao a vazamento de memoria ja que o metodo remove e o do Entitymanager

E sobre atualizar a tela via<blockquote>EventQueue.invokeLater(

new Runnable() {

<a class="mention" href="/u/override">@Override</a>

public void run() {

//Aqui vão os comandos de atualização de tela.

//Esse runnable rodará na thread do Swing.

}

}

);

</blockquote>

Não funcionaria pois eu mando o comando para remover o objeto e deixo o JProgressBar com indeterminate

Aproveitando a resposta sua, voce sugere uma outra forma de eu apagar minha entidade? como por exemplo usar query com o comando DELETE uma a uma cada entidade?

Criado 16 de dezembro de 2010
Ultima resposta 16 de dez. de 2010
Respostas 2
Participantes 2