7 votes

Comment appeler une fonction de façon répétée après un certain temps ?

Je veux créer une fonction qui sera appelée après un certain temps. De plus, cette fonction doit être répétée après le même laps de temps. Par exemple, la fonction peut être appelée toutes les 60 secondes.

10voto

hmjd Points 76411

Utilisation java.util.Timer.scheduleAtFixedRate() y java.util.TimerTask est une solution possible :

Timer t = new Timer();

t.scheduleAtFixedRate(
    new TimerTask()
    {
        public void run()
        {
            System.out.println("hello");
        }
    },
    0,      // run first occurrence immediatetly
    2000)); // run every two seconds

10voto

Tudor Points 39539

Pour appeler une méthode de manière répétée, il faut utiliser une forme de threading qui s'exécute en arrière-plan. Je recommande d'utiliser ScheduledThreadPoolExecutor (Exécuteur de pool de threads programmés) :

ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);
exec.scheduleAtFixedRate(new Runnable() {
           public void run() {
                // code to execute repeatedly
           }
       }, 0, 60, TimeUnit.SECONDS); // execute every 60 seconds

1voto

Omkar Points 52

Swing Timer est également une bonne idée pour mettre en œuvre des appels de fonction répétés.

Timer t = new Timer(0, null);

t.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
          //do something
    }
});

t.setRepeats(true);
t.setDelay(1000); //1 sec
t.start();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X