Olá pessoal!
Estou com um probleminha aqui e por este motivo, gostaria da ajuda de vocês.
No projeto que estou construindo ( swing ), tenho uma tabela que precisa ser “atualizada” de tempos em tempos e para isso, pensei em 2 maneiras.
Criei 3 threads que executam em tempos diferentes e ficariam assim:
A primeira executa um método que verifica se a data e hora de 3 colunas estão fora do prazo de acordo à data e hora do sistema ( esta funciona como eu preciso e esta não pode sair ).
As outras duas são referentes ao banco de dados, uma verifica se a quantidade de registros é diferente da quantidade de registros da jTable, se for, ela atualiza a tabela e a outra a cada 10 minutos atualiza a jTable sem verificar nada, só atualiza.
O problema acontece ao longo do tempo, ou seja, uma thread ‘atrapalha’ a outra, logo concluo que minha ‘ideia’ está errada.
Pensei em fazer somente uma thread que executasse essas 3 tarefas no seu tempo devido ( 5 segundos, 1 minuto e 5 minutos ) e minha dúvida seria exatamente esta: Como posso fazer isso funcionar corretamente?
Agradeço a ajuda!
Só para exemplo, a thread que eu deixei rodando e está funcionando sem apresentar erros:
``
public void threadCincoSegundos() {
Thread th1 = new Thread(new Runnable() { //cria uma thread
public void run() {
while (true) { //roda indefinidamente
verificaSla();
try {
Thread.sleep(5000); // 5 segundos
} catch (InterruptedException ex) {
icon = new ImageIcon(getClass().getResource("/source/error.png"));
JOptionPane.showMessageDialog(null, "Thread 5 Segundos apresentou erro.\nErro:" + ex, " SLA - Site Watcher - Mensagem:", 0, icon);
}
}
}
}
);
th1.start();
}
``