thread sleep thread sleep method java with examples
En este tutorial, analizaremos el método Thread Sleep () en Java. Veremos cómo funciona el método Thread.Sleep () con la ayuda de Ejemplos:
los java.lang.Thread.sleep (milisegundos largos) El método es el método proporcionado por la clase Thread que pone en suspensión el hilo que se está ejecutando actualmente. Especificaremos el tiempo de reposo como argumento del método de reposo.
=> Eche un vistazo a la guía para principiantes de Java aquí.
Lo que vas a aprender:
Método Thread Sleep () en Java
La clase Thread de Java proporciona dos variantes del método de suspensión.
El prototipo de ambas variantes del método sleep () se describe a continuación.
# 1) Variante del método de sueño # 1
Prototipo: el sueño vacío estático público (milisegundos largos) lanza InterruptedException
Parámetros: millis => la duración de tiempo en milisegundos durante el cual el hilo duerme.
Valor devuelto: vacío
Lanza:
- IllegalArgumentException => si millis es negativo
- InterruptedException => si cualquier otro hilo interrumpe el hilo actual. Cuando se produce esta excepción, se borra el estado interrumpido del hilo.
Descripción: Esta variación del método de suspensión hace que el hilo actual entre en suspensión o detiene temporalmente su ejecución durante el número de milisegundos especificado (proporcionado en el argumento del método). Sin embargo, mientras duerme, el hilo no pierde el monitor ni bloquea la propiedad.
# 2) Variante del método de sueño # 2
Prototipo: El sueño vacío estático público (long millis, int nanos) lanza InterruptdException
Parámetros:
preguntas y respuestas de la entrevista de prueba de qa para experimentados
- millis => la duración en milisegundos durante la cual el hilo debe dormir.
- nanos => nanosegundos adicionales durante los cuales el hilo puede dormir. El rango es 0 - 999999.
Valor devuelto: vacío
Lanza:
- IllegalArgumentException => si el valor milis es negativo o el valor nanos si está fuera de rango.
- InterruptedException => si cualquier otro hilo interrumpe el hilo actual. El estado interrumpido del subproceso se borra cuando se produce esta excepción.
Descripción: Esta variante del método de suspensión hace que el subproceso lo invoque a suspensión o detenga temporalmente su ejecución durante el número de milisegundos especificado. (primer argumento en una llamada a un método). Además, también proporcionó el número de nanosegundos (segundo argumento en una llamada de método) para dormir.
Tenga en cuenta que la exactitud y precisión del tiempo especificado depende de los temporizadores y programadores del sistema. Cuando el hilo está inactivo, la propiedad del candado o del monitor no cambia.
Trabajo del método Thread.Sleep
Siempre que un subproceso duerme o se suspende, lo hace el planificador. El método Thread.sleep () se comunica con el planificador de subprocesos para que el planificador pueda hacer que el subproceso en ejecución actual cambie para esperar el estado durante un período determinado.
Una vez transcurrido este tiempo especificado, el estado del hilo se cambia a 'ejecutable' para que pueda esperar a que la CPU continúe con la ejecución.
Por lo tanto, la duración de cuánto duerme el hilo depende del planificador y no del método. Como el planificador es parte del sistema operativo, la arquitectura del sistema operativo también juega un papel en los cambios de estado del hilo.
Ahora que hemos visto el método Thread.sleep () en detalle, debemos tener en cuenta algunos de los puntos al usar este método.
Los punteros incluyen:
#1) El método Thread.sleep () siempre pausa la ejecución del hilo actual.
#2) La duración real de la suspensión del hilo depende de los programadores y los temporizadores del sistema.
Por ejemplo, para un sistema muy ocupado, el tiempo de inactividad del hilo puede ser más largo que el especificado, mientras que, para el sistema que no está tan ocupado, puede ser más o menos cercano a un tiempo especificado.
#3) Mientras el hilo está inactivo, no pierde ningún candado o monitor que haya adquirido antes de dormir.
preguntas y respuestas de la entrevista técnica del analista de negocios
#4) El hilo actual que está en suspensión puede ser interrumpido por cualquier otro hilo. En este caso, se lanza 'InterruptedException'.
Ejemplo de Thread.sleep en Java
Pasemos ahora a un ejemplo que demuestra el método del sueño. Aquí, tenemos una clase de hilo que tiene un método run (). En el método run () llamamos 'Thread.sleep (1000)'. Luego, en la función principal, creamos dos instancias de este hilo, es decir, dos hilos. Luego comenzamos los hilos.
En la salida, notamos que mientras ambos subprocesos se están ejecutando, los subprocesos se programan uno tras otro, es decir, cuando uno duerme, el otro se está ejecutando.
Ejemplo:
|_+_|Producción:
Cuando observamos la salida, encontramos que Thread_0 y Thread_1 se turnan para ejecutarse.
Thread.sleep () con valor de tiempo de sueño negativo
A continuación, demostremos otro ejemplo del método Thread.sleep (). Aquí hemos considerado un caso especial de un valor de tiempo de sueño negativo. El programa es similar al programa anterior pero el tiempo de reposo proporcionado es -500.
Ejemplo:
|_+_|Producción:
En el resultado, podemos ver que el método ha arrojado 'IllegalArgumentException' ya que el valor negativo del tiempo de sueño no es aceptable.
Preguntas frecuentes
P # 1) ¿Cómo funciona la suspensión de subprocesos en Java?
Responder: Cuando se llama a sleep () en el hilo con una cantidad de tiempo especificada en milisegundos, el hilo deja de ejecutarse. Renuncia a la CPU. Por lo tanto, durante el tiempo en que el subproceso está inactivo, los otros subprocesos pueden usar la CPU.
P # 2) ¿Qué es yield () y sleep () en el hilo Java?
qué es la prueba funcional con ejemplos
Responder: El método de hilo sleep () hace que el hilo renuncie a la CPU y detenga la ejecución. Mientras este hilo duerme, los otros hilos adquieren CPU. Esto lo hace el planificador.
El método yield () también hace que el hilo ceda el control de la CPU cuando se llama, pero el método sleep () muestra un comportamiento más determinado en comparación con yield ().
P # 3) ¿Cómo se evita que un hilo de Java se duerma?
Responder: Dejamos de dormir el hilo Java usando el método interrupt (). Cualquier hilo que esté esperando o durmiendo puede interrumpirse invocando el método interrupt () de la clase Thread.
P # 4) ¿Podemos matar un hilo en Java?
Responder: No, el hilo no se mata en Java. En cambio, el hilo se detiene en Java. El hilo se termina y luego se puede cerrar sin problemas. A menudo usamos un campo booleano volátil que se revisa periódicamente para detectar cambios en los valores, de modo que podamos terminar el hilo.
P # 5) ¿Por qué sleep () es un método estático?
Responder: Cuando llamamos al método sleep () para poner el hilo en reposo, siempre lo llamamos usando la clase Thread.
Por ejemplo , Thread.sleep (1000);
La llamada anterior funciona en el contexto del hilo actual y pone el hilo actual en suspensión. Nunca llamamos al método usando una instancia de hilo específica. Por tanto, el método es estático.
Conclusión
En este tutorial, hemos discutido el método sleep () de hilos en Java. El método Sleep () hace que el subproceso actual que se está ejecutando deje de ejecutarse durante un período de tiempo específico que se proporciona como argumento para el método sleep.
El programador del sistema trabaja con el método de suspensión para poner el hilo actual en estado de espera. Mientras el hilo está durmiendo, sigue poseyendo los candados o monitores que ha adquirido. Cuando pasamos un valor negativo de tiempo de sueño al método de sueño, arroja 'IllegalArgumentException'.
Cuando pasamos un valor de tiempo de suspensión válido al método sleep (), los otros subprocesos tomarán el turno para ejecutarse mientras el subproceso actual duerme.
=> Consulte aquí para ver los tutoriales de capacitación de la A a la Z de Java aquí.
Lectura recomendada
- Multithreading en Java - Tutorial con ejemplos
- Multithreading en C ++ con ejemplos
- Java Synchronized: ¿Qué es la sincronización de subprocesos en Java?
- Hilos de Java con métodos y ciclo de vida
- Tutorial de cadenas de Java | Métodos de cadena de Java con ejemplos
- ¿Cómo utilizar el método toString de Java?
- TreeMap en Java - Tutorial con ejemplos de Java TreeMap
- Tutorial de JAVA para principiantes: más de 100 tutoriales prácticos en vídeo de Java