Timer Java

Rashmi Patidar 12 ottobre 2023
  1. Pianifica un’attività una tantum con Timer in Java
  2. Pianifica un timer ripetuto in Java
Timer Java

Timer è un servizio disponibile nel linguaggio di programmazione Java che consente agli utenti di programmare un evento futuro. Questi eventi futuri possono essere una volta o ripetuti a intervalli di tempo regolari. Possono esserci trigger che usiamo per avviare eventi futuri.

Pianifica un’attività una tantum con Timer in Java

import java.util.Timer;
import java.util.TimerTask;

public class StopWatch {
  Timer timer;

  public StopWatch(int seconds) {
    timer = new Timer();
    timer.schedule(new StopTask(), seconds * 1000);
  }

  public static void main(String[] args) {
    new StopWatch(10);
    System.out.println("StopWatch Started.");
  }

  class StopTask extends TimerTask {
    public void run() {
      System.out.println("Time Up!");
      timer.cancel();
    }
  }
}

Nel blocco di codice sopra, abbiamo creato una classe pubblica denominata classe StopWatch. Ha il suo costruttore pubblico, che richiede tempo in secondi. Nel blocco costruttore, viene creata un’istanza del timer. Nell’istanza del timer, viene chiamato il metodo schedule. Questa attività del metodo consiste nel pianificare l’evento specifico in un determinato periodo di tempo. Richiede due parametri TimerTask e il ritardo. Definiamo il ritardo in millisecondi. Il metodo genera IllegalArgumentException quando il ritardo definito definito non è valido, IllegalArgumentException quando l’attività fornita è già pianificata o annullata. Genera anche NullPointerException quando l’istanza dell’attività fornita è nulla.

Appena sotto il costruttore, abbiamo il metodo main da cui inizia l’esecuzione effettiva. Crea una nuova istanza della classe StopWatch con ritardo definito, che esegue internamente l’istruzione nel blocco costruttore.

Al di sotto del metodo main, è definita una classe interna denominata StopTask che estende una classe astratta TimerTask. TimerTask è una classe astratta che ha un metodo astratto chiamato metodo run. Il metodo deve essere sovrascritto nella classe StopTask e, se non sovrascritto, la classe stessa dovrebbe diventare astratta. Ora nel metodo run, abbiamo fermato il timer con il metodo cancel. Il metodo elimina qualsiasi attività attualmente pianificata e termina l’attività timer.

Di seguito è riportato l’output del blocco di codice precedente. La seconda riga viene stampata quando viene rilevato il ritardo nel metodo di pianificazione.

StopWatch Started.
Time Up!

Pianifica un timer ripetuto in Java

Modificheremo il codice sopra per creare un timer ripetuto. Il timer ripetuto viene eseguito ripetutamente a intervalli di tempo regolari.

Nel blocco di codice sottostante, abbiamo creato un’istanza Timer. L’uso della variabile di istanza consiste nel chiamare un metodo scheduleAtFixedRate, che pianifica gli eventi futuri. Il metodo ha diverse implementazioni. Quello che abbiamo usato richiede tre parametri. Innanzitutto, un’istanza TimerTask contiene istruzioni relative all’azione che vogliamo eseguire in futuro. Successivamente, la variabile delay definisce il tempo impiegato dall’attività o dall’evento per l’esecuzione. Ultimo è il period che definisce il tempo tra le successive chiamate dell’evento. Questo metodo genera eccezioni che includono le eccezioni NullPointerException IllegalArgument e IllegalState.

import java.util.Timer;
import java.util.TimerTask;

public class RepeatedTimer {
  public static void main(String[] args) {
    Timer timer = new Timer();
    System.out.println("Stop Watch Started.");
    timer.scheduleAtFixedRate(new RepeatedTask(), 500, 1000);
  }

  static class RepeatedTask extends TimerTask {
    public void run() {
      System.out.println("Running!");
    }
  }
}

Di seguito l’esito senza fine del futuro evento in programma.

Running!
Running!
Running!
Running!
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Articolo correlato - Java Timer