Problemas com Thread

4 respostas
P

Olá bom dia a todos. Estou com um problema, eu tenho um servidor, e de vez em quando ele cai e eu não sei o por que, então para verificar se ele caiu ou não, de 5 em 5 segundos ele vai criar um arquivo texto com data e hora escrito dentro do arquivo, então eu fiz assim:

public static void time5Seconds() throws IOException, InterruptedException {
        new Thread (new Runnable() {

            @Override
            public void run() {
                    
            while (i < 10) {
                    try {
                        java.text.SimpleDateFormat formater;
                        Date y = new Date();
                        formater = new java.text.SimpleDateFormat("dd/MM/yyyy - hh:mm:ss");
                        hora = formater.format(y);

                        String fileNameHora = "SP.txt";

                        BufferedWriter br;
                        br = new BufferedWriter(new FileWriter(new File(fileNameHora)));

                        br.write(hora);
                        br.close();

                        //System.out.println("Arquivo recebido: " + fileNameHora);
                        //Thread.sleep(5000);
                    } catch (Exception e) {

                    }
                }
            }
        });
    }
  • Sem a Thread ali ele funciona, mais ele precisa estar dentro da thread para pode executar em segundo plano, se alguém puder dar uma força, agradeço. Pedro Carvilhe.

4 Respostas

E

Use um java.util.Timer para gravar seu arquivo periodicamente.

P

como assim? poderia me explicar um pouquinho melhor ?

P

tinha esquecido de dar o start, vergonhoso, mais acontece hehe

E

Em vez de usar Thread, você pode usar duas classes do Java - java.util.Timer e java.util.TimerTask - que são apropriadas exatamente para o seu problema, que é o de fazer algo periodicamente.

Você cria uma classe derivada de TimerTask que, em seu método run, grava o arquivo uma vez, e cria uma instância de Timer, que, ao ser inicializada com a sua instãncia da classe derivada de TimerTask, chama o método run (que grava o tal arquivo) a cada 5 segundos.

Olhe a documentação:

http://docs.oracle.com/javase/6/docs/api/java/util/Timer.html
http://docs.oracle.com/javase/6/docs/api/java/util/TimerTask.html

Criado 22 de maio de 2013
Ultima resposta 22 de mai. de 2013
Respostas 4
Participantes 2