Sleep and Wait son dos métodos utilizados para múltiples lecturas en Java. El método de sueño pertenece a la clase de subprocesos mientras el método de espera es de la clase de objeto. El diferencia clave Entre el sueño y la espera en Java es que el El sueño se usa para suspender la ejecución del hilo actual para el número especificado de milisegundos, mientras que el método de espera se usa para hacer que el hilo actual espere hasta que otro hilo invoque el método notify o notifyall para el objeto.
Un hilo es la unidad más pequeña de procesamiento en el sistema operativo. Es un solo flujo de control secuencial dentro de un programa. Los hilos son livianos. Múltiples lectura es el mecanismo de ejecutar múltiples hilos al mismo tiempo. Lenguajes de programación como Java admite múltiples lectura. Multithreading tiene ventajas porque permite ejecutar múltiples hilos simultáneamente y los hilos son independientes entre sí. Hay métodos en Java que se pueden utilizar para la lectura múltiple. Dos de ellos están dormidos y esperan.
1. Descripción general y diferencia de claves
2. ¿Qué es el sueño en Java?
3. ¿Qué es espera en Java?
4. Similitudes entre dormir y esperar en Java
5. Comparación de lado a lado - Sleep vs Wait in Java en forma tabular
6. Resumen
Hay múltiples procesos que se ejecutan en un sistema operativo. Un proceso es un programa en ejecución. Cada proceso puede tener múltiples hilos, y hay un cambio de contexto entre estos hilos. En Java, hay dos formas de crear un hilo. Es decir, extendiendo la clase de subproceso o implementando la interfaz ejecutable. La clase de hilo tiene constructores y métodos para crear y realizar operaciones en un hilo. La clase de hilo extiende la clase de objeto e implementa la interfaz ejecutable. La interfaz ejecutable debe ser implementada por cualquier clase cuyas instancias están destinadas a ser ejecutadas por un hilo. Cuando el subproceso se ejecuta, el código que debe ejecutar se escribe dentro del método Ejecutar. El hilo que debe ejecutarse es seleccionado por el programador de hilos. Solo un hilo se ejecuta en un solo proceso.
Un hilo pasa por varias fases. Después de crear un objeto de clase de subproceso, el programador puede invocar el método de inicio. Antes de invocar ese método, se dice que el hilo está en el nuevo estado. El planificador de subprocesos selecciona un hilo para ejecutar. Si el hilo aún no está seleccionado por el planificador de subprocesos, pero si se invoca el método de inicio, el hilo está en un estado ejecutable. Después de que el programador de subprocesos seleccione el hilo para ejecutar, transita al estado en ejecución. Si el hilo está vivo pero actualmente no es elegible para ejecutar, entonces está en estado no ejecutable o bloqueado. Después de completar el método de ejecución, el hilo va al estado terminado. Esas son las fases principales del ciclo de vida del hilo.
Hay varios métodos disponibles en la clase de subprocesos para realizar diferentes tareas. El método de sueño se usa para dormir el método durante un tiempo específico. La sintaxis para el método del sueño es el sueño público nulo (long milisegundos) lanza interruptedException. Hace que el hilo que se ejecuta actualmente detiene la ejecución temporal para un número especificado de milisegundos. Si otro hilo interrumpe el hilo actual, el estado interrumpido del hilo actual se borra cuando se lanza esta excepción.
Figura 01: Programa Java con método de sueño
Según el programa anterior, el método de ejecución contiene un código que debe ejecutarse. En el programa principal, se crean dos objetos del Expplethread1, y los métodos de inicio se invocan en ellos. Que permitirá ejecutar el código dentro del método Ejecutar. Solo un hilo se ejecuta a la vez. Con el hilo. dormir (1000); permitirá que el primer hilo termine la ejecución por 1000 milisegundos. Cuando duerme un hilo, el planificador de hilos recoge el otro hilo.
Múltiples hilos pueden acceder a un recurso compartido. Puede hacer que generar una salida incorrecta. La sincronización de hilos se puede usar para hacer solo un hilo para acceder al recurso compartido. Asumir una situación de la siguiente manera. Si, hay dos hilos como T1 y T2, T1 comienza a guardar valores en un archivo de texto llamado Text1.TXT. Esos valores se utilizarán para algún otro cálculo cuando T1 regrese. Si T2 comienza antes de que T1 regrese, T2 puede cambiar los valores guardados por T1. Esto puede hacer que T1 proporcione una salida incorrecta. Con la ayuda de la sincronización, cuando T1 comienza a usar el texto1.Archivo TXT, ese archivo se puede bloquear, por lo que solo es accesible por T1. El T2 no puede cambiarlo hasta que T1 libera el bloqueo para acceder a ese archivo de texto. Cuando se complete la tarea, el T1 puede liberar el bloqueo. El bloqueo también se conoce como el monitor.
La sincronización de subprocesos se puede lograr mediante comunicación entre subprocesos. Una sección crítica es un segmento de código que accede a los recursos compartidos. En la comunicación entre subcontrol, se detiene un hilo en su sección crítica, y se permite que otro hilo ingrese en la misma sección crítica para ser ejecutado. Se implementa utilizando los métodos Wait, Notify y Notifyall. Pertenecen a la clase de objeto. El método de espera se usa para permitir que el hilo actual libere el bloqueo y espere hasta que otro hilo invoque el método notify o notifyall para el objeto. El método de notificación se utiliza para despertar un solo hilo que está esperando el bloqueo. El notifyal despierta todos los hilos que están esperando en la cerradura.
Figura 02: Clase de calculadora
Figura 03: Método principal
La clase de calculadora extiende el hilo. El bloque sincronizado está dentro del método de ejecución. El método For Loop and Notify está dentro del bloque sincronizado. Dentro del método principal, una instancia de un hilo creado y el método de inicio se llama en esa instancia. El método principal esperará hasta que el hilo haga una notificación. Al ejecutar el programa, el método principal espera hasta la ejecución completa del método de ejecución y espera el método notificar. Una vez que se llama al método de notificación, el método principal deja de esperar y comienza a ejecutar el resto del código. Main está esperando hasta que se complete el hilo de la calculadora. Finalmente, se imprime el resultado de la suma.
Si no hay un bloque sincronizado y si el método principal tiene un código como a continuación, le dará la salida como cero porque no está esperando que se complete el otro hilo.
Calculadora t1 = nueva calculadora ();
T1. comenzar ();
Sistema.afuera.println (T1.suma);
dormir vs espera en java | |
El método de sueño hace que el hilo actual suspenda la ejecución para el número especificado de milisegundos, sujeto a la precisión y precisión de los temporizadores y programadores del sistema. | El método de espera hace que el hilo actual espere hasta que otro hilo invoque el método notify o notifyall para el objeto. |
Asociación con el bloqueo | |
El método del sueño no libera el bloqueo en un objeto durante la sincronización. | El método de espera libera el bloqueo durante la sincronización. |
Método de ejecución | |
El método de sueño se ejecuta en el hilo actual. | El método de espera se llama al objeto. |
Clase asociada | |
El sueño es un método de clase de hilo. | La espera es un método de clase de objetos. |
Terminación | |
El proceso de sueño se completa después de que termine la cantidad de tiempo especificada. | El método de espera se interrumpe llamando a los métodos notificar o notificar. |
Hay múltiples procesos que se ejecutan en el sistema operativo. Cada proceso puede tener múltiples hilos. Un hilo es la unidad más pequeña de procesamiento en un sistema operativo. El lenguaje de programación de Java admite múltiples lectura. Permite ejecutar múltiples hilos simultáneamente. El sueño y la espera son dos métodos que se pueden usar al implementar múltiples subprocesos. La diferencia entre el sueño y la espera en Java es que el sueño se usa para suspender la ejecución del hilo actual para el número especificado de milisegundos, mientras que el método de espera se usa para hacer que el hilo actual espere hasta que otro hilo invoque la notificación o notifique Método para el objeto.
1."Comunicación entre hilos en Java - Javatpoint.". Javatpoint. Disponible aquí
2. Hilo Comunicación en Java multithreading | Tutorial de Java Core | StudyTonight. Disponible aquí