Thread.sleep() en Java – Java Thread sleep

Introducción

El método Thread.sleep() de Java se puede utilizar para pausar la ejecución del hilo actual durante un tiempo especificado en milisegundos. El valor del argumento para los milisegundos no puede ser negativo. De lo contrario, se genera una IllegalArgumentException.

sleep(long millis, int nanos) es otro método que se puede usar para pausar la ejecución del hilo actual durante un número especificado de milisegundos y nanosegundos. Los valores de nanosegundos permitidos están entre 0 y 999999.

En este artículo, aprenderás sobre el Thread.sleep() de Java.

Cómo funciona Thread.sleep

Thread.sleep() interactúa con el planificador de hilos para poner el hilo actual en un estado de espera durante un período de tiempo especificado. Una vez que el tiempo de espera ha terminado, el estado del hilo se cambia a un estado ejecutable y espera la CPU para continuar la ejecución. El tiempo real que el hilo actual duerme depende del planificador de hilos que forma parte del sistema operativo.

Puntos importantes sobre Thread.sleep de Java

  1. Siempre pausa la ejecución del hilo actual.
  2. El tiempo real que el hilo duerme antes de despertar y comenzar la ejecución depende de los temporizadores y planificadores del sistema. Para un sistema tranquilo, el tiempo real de sueño es cercano al tiempo de sueño especificado, pero para un sistema ocupado, será un poco más largo.
  3. Thread.sleep() no pierde ningún monitor ni bloquea el hilo actual que ha adquirido.
  4. Cualquier otro hilo puede interrumpir el hilo actual en espera, y en tales casos se lanza InterruptedException.

Ejemplo de Thread.sleep en Java

Aquí hay un programa de ejemplo donde Thread.sleep() se usa para pausar la ejecución del hilo principal durante 2 segundos (2000 milisegundos):

ThreadSleep.java
package com.journaldev.threads;

public class ThreadSleep {

    public static void main(String[] args) throws InterruptedException {
        long start = System.currentTimeMillis();

        Thread.sleep(2000);

        System.out.println("Sleep time in ms = " + (System.currentTimeMillis() - start));
    }
}

Primero, este código almacena el tiempo actual del sistema en milisegundos. Luego duerme durante 2000 milisegundos. Finalmente, este código imprime el nuevo tiempo actual del sistema menos el tiempo anterior del sistema:

Output
Sleep time in ms = 2005

Observe que esta diferencia no es precisamente de 2000 milisegundos. Esto se debe a cómo funciona Thread.sleep() y a la implementación específica del sistema operativo del planificador de hilos.

Conclusión

En este artículo, aprendiste sobre Thread.sleep() de Java.

Continúa tu aprendizaje con más tutoriales de Java.

Source:
https://www.digitalocean.com/community/tutorials/thread-sleep-java