Boa tarde a todos,
estou implementando algo para fazer determinada tarefa no sistema segundo um intervalo de tempo.
Quando meu programa inicia ele lança uma thread que chama essa classe aqui:
public class ThreadMonitorarFTP extends TimerTask {
String caminho, usuario, senha;
int executando = 0;
static Timer timer = new Timer();
public ThreadMonitorarFTP(String caminho, String usuario, String senha) {
JOptionPane.showMessageDialog(null, "entrou no construtor...");
//timer //esse delay de 5 seg a cada 20 segundos
timer.scheduleAtFixedRate(this, 1000 * 5, 10000 * 2);
}
@Override
public void run() {
if (executando == 1) {
//não faz nada
} else {
executando = 1; //em execução...
JOptionPane.showMessageDialog(null, executando + " ##################"); //tarefa que o sistema realizará...
executando = 0; //fim da execução...
}
}
}
Queria que ele funcionasse assim: entra e começa a realizar a tarefa, enquanto realiza a tarefa se o tempo exceder 20 segundos não chamasse novamente a tarefa, ñ executasse nada, mas ele está empilhando as tarefas... Se eu executo e não clico no botão da mensagem é como se a tarefa estivesse em execução, só que depois de clicar no botão ele mostra as outras mensagens das tarefas que teriam que ser executadas pois o tempo excedeu 20 segundos.
Parece que o JOptionPane não tá sendo bloqueante e ele atribui zero a var entrando sempre na msg.
Valeu