Cómo retrasar unos segundos en Java

Mohammad Irfan 12 octubre 2023
  1. Crear un retraso usando el método Thread.sleep() en Java
  2. Hacer un retraso usando el método TimeUnit.sleep() en Java
  3. Hacer un retraso usando el ScheduledExecutorService en Java
  4. Hacer un retraso usando ScheduledExecutorService en Java
Cómo retrasar unos segundos en Java

Este tutorial introduce cómo hacer un retraso en Java y enumera algunos códigos de ejemplo para entenderlo.

Hay varias maneras de crear un retraso, como los métodos TimeUnit.sleep(), ScheduleAtFixedRate(), y Thread.sleep(), etc. Veamos los ejemplos.

Crear un retraso usando el método Thread.sleep() en Java

Thread es una clase de Java que se usa para crear y ejecutar tareas simultáneamente y proporciona un método sleep() para detener la ejecución actual por un tiempo.

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      for (int i = 0; i < 2; i++) {
        Thread.sleep(1000);
        System.out.println("Sleep " + i);
      }
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

Resultado:

Sleep 0
Sleep 1

Hacer un retraso usando el método TimeUnit.sleep() en Java

En este ejemplo, utilizamos el método sleep() de la clase TimeUnit, que se utiliza para hacer un retraso en la ejecución durante el tiempo especificado. La clase TimeUnit pertenece a un paquete de APIs concurrentes en Java.

import java.util.concurrent.TimeUnit;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      for (int i = 0; i < 2; i++) {
        TimeUnit.SECONDS.sleep(2);
        System.out.println("Sleep " + i);
      }
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

Resultado:

Sleep 0
Sleep 1

Hacer un retraso usando el ScheduledExecutorService en Java

Java proporciona una clase ScheduledExecutorService para programar la ejecución en un entorno concurrente. Podemos usar el método run() dentro de él para ejecutar la ruta de ejecución separada. Vea el ejemplo a continuación.

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class Main {
  public static void main(String args[]) {
    try {
      final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
      executorService.scheduleAtFixedRate(new Runnable() {
        @Override
        public void run() {
          executeTask();
        }
      }, 0, 1, TimeUnit.SECONDS);
    } catch (Exception e) {
      System.out.println(e);
    }
  }
  private static void executeTask() {
    System.out.println("Task Executing... ");
  }
}

Resultado:

Task Executing... 
Task Executing... 
Task Executing... 

Hacer un retraso usando ScheduledExecutorService en Java

Si trabajas con Java 9 o una versión superior, puedes usar el concepto de referencia del método para llamar al método dentro del método scheduleAtFixedRate(). Vea el ejemplo a continuación.

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
      executorService.scheduleAtFixedRate(SimpleTesting::executeTask, 1, 2, TimeUnit.SECONDS);
    } catch (Exception e) {
      System.out.println(e);
    }
  }
  private static void executeTask() {
    System.out.println("Task Executing... ");
  }
}

Resultado:

Task Executing... 
Task Executing... 
Task Executing... 

Artículo relacionado - Java Multithreading