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
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
marcio_gs
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
marcio_gs
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.