Cómo retrasar unos segundos en Java
-
Crear un retraso usando el método
Thread.sleep()
en Java -
Hacer un retraso usando el método
TimeUnit.sleep()
en Java -
Hacer un retraso usando el
ScheduledExecutorService
en Java -
Hacer un retraso usando
ScheduledExecutorService
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...