El modo de espera y espera son dos métodos utilizados para multiprocesamiento en Java. El método de suspensión pertenece a la clase Thread mientras que el método de espera es de la clase Object. los diferencia clave entre dormir y esperar en Java es que, el el modo de suspensión se utiliza para suspender la ejecución del subproceso actual durante el número especificado de milisegundos, mientras que el método de espera se utiliza para hacer que el subproceso actual espere hasta que otro subproceso invoque el método not o notAll para el objeto.
Un hilo es la unidad más pequeña de procesamiento en el sistema operativo. Es un único flujo secuencial de control dentro de un programa. Los hilos son ligeros. El subprocesamiento múltiple es el mecanismo de ejecución de varios subprocesos al mismo tiempo. Los lenguajes de programación como Java soportan multihilo. El subprocesamiento múltiple tiene ventajas porque permite ejecutar varios subprocesos simultáneamente y los subprocesos son independientes entre sí. Hay métodos en Java que se pueden usar para multiprocesamiento. Dos de ellos son dormir y esperar..
1. Resumen y diferencia clave
2. Que es dormir en Java
3. Qué es esperar en Java
4. Similitudes entre dormir y esperar en Java
5. Comparación lado a lado: sueño frente a espera en 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 varios subprocesos, y se produce un cambio de contexto entre estos subprocesos. En Java, hay dos formas de crear un hilo. Esto es al extender la clase de hilo o al implementar la interfaz Runnable. La clase Thread tiene constructores y métodos para crear y realizar operaciones en un hilo. La clase Thread extiende la clase Object e implementa la interfaz Runnable. La interfaz Runnable debe ser implementada por cualquier clase cuyas instancias estén destinadas a ser ejecutadas por un hilo. Cuando se ejecuta el hilo, el código que debe ejecutarse se escribe dentro del método de ejecución. El subproceso 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 la clase Thread, 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 programador de hilos selecciona un hilo para ejecutar. Si el subproceso de subprocesos aún no ha seleccionado el subproceso pero si se invoca el método de inicio, entonces el subproceso se encuentra en un estado ejecutable. Después de que el programador de subprocesos selecciona el subproceso que se va a ejecutar, pasa al estado de ejecución. Si el subproceso está vivo pero no se puede ejecutar actualmente, entonces se encuentra en estado no ejecutable o bloqueado. Después de completar el método de ejecución, el subproceso pasa al estado terminado. Esas son las principales fases del ciclo de vida del hilo..
Hay varios métodos disponibles en la clase de hilo para realizar diferentes tareas. El método del sueño se utiliza para dormir el método durante un período de tiempo específico. La sintaxis del método sleep es public void sleep (milisegundos largos) lanza InterruptedException. Hace que el subproceso que se está ejecutando actualmente detenga la ejecución temporal durante un número específico 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 suspensión
De acuerdo con el programa anterior, el método de ejecución contiene código que debe ejecutarse. En el programa principal, se crean dos objetos de ExampleThread1, y se invocan los métodos de inicio en ellos. Eso permitirá ejecutar el código dentro del método de ejecución. Sólo se ejecuta un hilo a la vez. Con el hilo. dormir (1000); permitirá que el primer hilo termine la ejecución por 1000 milisegundos. Cuando un hilo está inactivo, el programador de hilos recoge el otro hilo..
Múltiples hilos pueden acceder a un recurso compartido. Puede causar generar una salida incorrecta. La sincronización de subprocesos se puede usar para hacer que solo un subproceso acceda al recurso compartido. Supongamos una situación de la siguiente manera. Si hay dos subprocesos 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 retorne t1. 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 archivo Text1.txt, ese archivo se puede bloquear, por lo que solo se puede acceder a él mediante t1. El t2 no puede cambiarlo hasta que t1 libere el bloqueo para acceder a ese archivo de texto. Cuando se completa la tarea, el t1 puede liberar el bloqueo. La cerradura también se conoce como el monitor..
La sincronización de hilos se puede lograr mediante la comunicación entre hilos. Una sección crítica es un segmento de código que accede a los recursos compartidos. En la comunicación entre subprocesos, un subproceso se detiene pausadamente en su sección crítica, y se permite que otro subproceso ingrese en la misma sección crítica que se ejecutará. Se implementa utilizando los métodos de espera, notificación y notificación. Pertenecen a la clase Object. El método de espera se utiliza para permitir que el subproceso actual libere el bloqueo y espere hasta que otro subproceso invoque los métodos de notificación o notificación para el objeto. El método de notificación se utiliza para activar un solo hilo que está esperando el bloqueo. El notifica todos despierta todos los hilos que están esperando en el bloqueo.
Figura 02: Clase de calculadora
Figura 03: Método principal
La clase Calculadora extiende el hilo. El bloque sincronizado está dentro del método de ejecución. El método de bucle for y notificación está dentro del bloque sincronizado. Dentro del método principal, una instancia de un subproceso creado y el método de inicio se llama en esa instancia. El método principal esperará hasta que el hilo dé una notificación. Al ejecutar el programa, el método principal espera toda la ejecución del método de ejecución y espera el método de notificación. 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 el que se muestra a continuación, la salida será cero porque no está esperando a que se complete el otro hilo..
Calculadora t1 = nueva Calculadora ();
t1 comienzo ();
System.out.println (t1.sum);
dormir vs esperar en Java | |
El método de suspensión hace que el subproceso actual suspenda la ejecución por el número especificado de milisegundos, sujeto a la precisión y la precisión de los cronómetros y programadores del sistema.. | El método de espera hace que el subproceso actual espere hasta que otro subproceso invoque el método notification o notifyAll para el objeto. |
Asociación con Lock | |
El método de suspensión no libera el bloqueo de 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 suspensión se ejecuta en el hilo actual. | El método de espera se llama en el objeto. |
Clase asociada | |
El sueño es un método de la clase Thread.. | La espera es un método de clase de objeto.. |
Terminación | |
El proceso de suspensión se completa después de que finaliza el tiempo especificado. | El método de espera se interrumpe llamando a los métodos de notificar o notificar a todos. |
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 Java soporta multihilo. Permite ejecutar múltiples hilos simultáneamente. El modo de espera y espera son dos métodos que se pueden usar al implementar subprocesos múltiples. La diferencia entre espera y espera en Java es que, la suspensión se usa para suspender la ejecución del subproceso actual por el número especificado de milisegundos, mientras que el método de espera se usa para hacer que el subproceso actual espere hasta que otro subproceso llame a notificar o notificar a todos método para el objeto.
1. "Comunicación inter-Thread en Java - Javatpoint".. JavaTPoint. Disponible aquí
2. Hilo de rosca Comunicación en Java multihilo | Core Java Tutorial | Studytonight. Disponible aquí