Thread Class es una clase que es básicamente un hilo de ejecución de los programas. Está presente en el paquete Java.lang. La clase Thread contiene el Dormir() método. Hay dos métodos sobrecargados del método Sleep() presentes en la clase Thread, uno con un argumento y otro con dos argumentos. El método sleep() se utiliza para detener la ejecución del subproceso actual (cualquiera que se esté ejecutando en el sistema) durante un período de tiempo específico y una vez transcurrido ese tiempo, el subproceso que se está ejecutando antes comienza a ejecutarse nuevamente.
Punto importante sobre el método Thread.sleep():
- Método Siempre que Thread.sleep() funciona para ejecutarse, siempre pausa la ejecución del hilo actual.
- Si algún otro subproceso se interrumpe cuando el subproceso está inactivo, se generará InterruptedException.
- Si el sistema está ocupado, entonces el tiempo real que el subproceso dormirá será mayor en comparación con el transcurrido al llamar al método de suspensión y si el sistema tiene menos carga, entonces el tiempo real de suspensión del subproceso será cercano al transcurrido mientras llamando al método sleep().
Sintaxis del método Sleep()
Hay 4 variaciones del método sleep() en Java Thread. Estos son:
1. public static void sleep(long millis)throws InterruptedException 2. public static void sleep(long millis)throws IllegalArguementException 3. public static void sleep(long millis, int nanos)throws InterruptedException 4. public static void sleep(long millis, int nanos)throws IllegalArguementException>
Parámetros pasados en el método Thread.Sleep()
- millis: Duración del tiempo en milisegundos durante el cual el hilo dormirá nanos: Este es el tiempo adicional en nanosegundos durante el cual queremos que el hilo entre en reposo. Va de 0 a 999999.
Tipo de retorno del método Sleep(): No devuelve ningún valor, es decir, el tipo de retorno de la función de suspensión es nulo.
El método de suspensión con un parámetro es un método nativo, es decir, la implementación de este método se realiza en otro lenguaje de programación y el otro método con dos parámetros no es un método nativo, es decir, su implementación se realiza en Java. Ambos métodos de suspensión son estáticos, es decir, podemos acceder a ellos mediante la clase Thread. Ambos métodos arrojan una excepción marcada, es decir, podemos manejar la excepción usando la palabra clave throws o usando el bloque try and catch.
Podemos usar el método Thread.Sleep() para cualquier hilo, es decir, podemos hacerlo con el hilo principal o cualquier otro hilo que creemos mediante programación.
1. Uso del método Thread.Sleep() para el hilo principal
Java
// Java Program for sleeping the main thread.> import> java.io.*;> import> java.lang.Thread;> class> GFG {> >public> static> void> main(String[] args)> >{> >// we can also use throws keyword followed by> >// exception name for throwing the exception> > >try> {> >for> (>int> i =>0>; i <>5>; i++) {> > >// it will sleep the main thread for 1 sec> >// ,each time the for loop runs> >Thread.sleep(>1000>);> > >// printing the value of the variable> >System.out.println(i);> >}> >}> >catch> (Exception e) {> > >// catching the exception> >System.out.println(e);> >}> >}> }> |
>
árbol binario
>Producción
0 1 2 3 4>
2. Uso del método Thread.Sleep() para subprocesos personalizados
Java
// Java Program for sleeping the custom thread.> import> java.io.*;> import> java.lang.Thread;> class> GFG>extends> Thread {> >public> void> run()> >{> >// thread 0> >// we can also use throws keyword followed by> >// exception name for throwing the exception> >try> {> >for> (>int> i =>0>; i <>5>; i++) {> > >// it will sleep the main thread for 1 sec> >// ,each time the for loop runs> >Thread.sleep(>1000>);> > >// This Thread.sleep() method will sleep the> >// thread 0.> >// printing the value of the variable> >System.out.println(i);> >}> >}> >catch> (Exception e) {> > >// catching the exception> >System.out.println(e);> >}> >}> >public> static> void> main(String[] args)> >{> >// main thread> >GFG obj =>new> GFG();> >obj.start();> >}> }> |
>
convenciones de nomenclatura de Java
>Producción
0 1 2 3 4>
3. IllegalArguementException cuando el tiempo de sueño es negativo
Java
// Java Program for showing how exception can occur if we> // pass the negative timeout value.> import> java.io.*;> import> java.lang.Thread;> class> GFG {> >public> static> void> main(String[] args)> >{> >// we can also use throws keyword followed by> >// exception name for throwing the exception> > >try> {> >for> (>int> i =>0>; i <>5>; i++) {> > >// this will throw the> >// IllegalArgumentException> >Thread.sleep(->100>);> > >// printing the value of the variable> >System.out.println(i);> >}> >}> >catch> (Exception e) {> > >// catching the exception> >System.out.println(e);> >}> >}> }> |
>
>Producción
java.lang.IllegalArgumentException: timeout value is negative>