Thread causa problema no Hibernate

5 respostas
M

Bom pessoal, é o seguinte: tenho uma classe que executa o código do hibernate. Ela funciona normal. Só que resolvi adicionar uma progressbar para mostrar ao usuário que a aplicação não travou. Porém quando adicionei uma thread para fazer isso, o programa age de maneira estranha. Uma hora ele grava no banco, outra hora não. O que eu mudei do outro código foi:

Thread t = new Thread(new Runnable() { public void run() { //processo que funcionava sem a thread }); t.setPriority(3); t.start();

Se alguém tiver alguma idéia do motivo desse comportamento compartilhe :wink:

5 Respostas

fiaux

Nunca mexi com threads, mas esse trecho de código está onde? Você falou que tem uma classe que executa o código do hibernate? Como assim? Esse setPriority poderia estar interferindo?

ViniGodoy

Já tentou tirar fora esse setPriority?
Não sei como seu SO lida com as prioridades, mas uma thread de prioridade baixa demais pode demorar a rodar…

M

ViniGodoy:
Já tentou tirar fora esse setPriority?
Não sei como seu SO lida com as prioridades, mas uma thread de prioridade baixa demais pode demorar a rodar…

Bom pessoal, eu preciso dele para fazer a progressbar rodar sem dar umas travadas. Sem o setPriority o usuário vai ver a barrinha travando e vai achar que é o programa. Se tiverem uma solução pra progressbar também serve.

ViniGodoy

O setPriority não tem absolutamente nada a ver com a barrinha travar ou não. Mesmo se tiver, o ideal é corrigir o seu código, não depender de prioridades de thread.

Como cada SO controla as prioridades é dependente de plataforma. Alguns SOs podem nem sequer garantir a execução de threads de prioridade baixa. Então, se seu sistema depende disso, é melhor reve-lo pq vc está num erro gravíssimo de modelagem.

M

ViniGodoy:
O setPriority não tem absolutamente nada a ver com a barrinha travar ou não. Mesmo se tiver, o ideal é corrigir o seu código, não depender de prioridades de thread.

Como cada SO controla as prioridades é dependente de plataforma. Alguns SOs podem nem sequer garantir a execução de threads de prioridade baixa. Então, se seu sistema depende disso, é melhor reve-lo pq vc está num erro gravíssimo de modelagem.

Puts, já tentei de tudo pra essa maldita progressbar funcionar direito, mas tá difícil. Ela é chamada dentro dessa nova Thread. Será que é esse o problema? Se tiver alguma idéia de como eu posso fazer ela funcionar sem travar agradeceria.

Criado 12 de agosto de 2008
Ultima resposta 12 de ago. de 2008
Respostas 5
Participantes 3