La lectura múltiple es un tema inevitable e importante en Java. A continuación desarrollaremos el aprendizaje de múltiples subprocesos. El siguiente contenido es una explicación del contenido multiproceso de Java antes de "agregar paquetes JUC en JDK", que incluye interfaces como Wait (), notificar () en la clase de objeto en la clase de hilo;
Nota: El paquete JUC se refiere al paquete Java.util.concurrent, que es realizado por Java Master Doug Lea y agregado a Java en la versión JDK 1.5.
Antes de ingresar al estudio de los siguientes capítulos, primero comprenda algunos conceptos relacionados de múltiples lectura.
Diagrama de estado de hilo
ilustrar:
Los hilos incluyen los siguientes 5 estados.
1. Nuevo estado: después de que se crea el objeto de subproceso, ingresa al nuevo estado. Por ejemplo, Thread Thread = New Thread ().
2. Runnable: también conocido como "Estado ejecutable". Después de que se crea el objeto de subproceso, otros hilos llaman al método Start () del objeto para iniciar el hilo. Por ejemplo, Thread.Start (). Se puede programar un hilo en un estado listo para ejecutar por la CPU en cualquier momento.
3. Estado en ejecución (en ejecución): el hilo obtiene permisos de CPU para la ejecución. Cabe señalar que los hilos solo pueden ingresar al estado en ejecución desde el estado listo.
4. Estado bloqueado: Estado bloqueado significa que el hilo renuncia a los derechos de uso de la CPU por alguna razón y deja de funcionar temporalmente. No es hasta que el hilo ingresa al estado listo que tiene la oportunidad de ir al estado en funcionamiento. Hay tres tipos de bloqueo:
(01) Esperando bloquear: llamando al método Wait () del hilo, deje que el hilo espere la finalización de un cierto trabajo.
(02) Bloqueo sincronizado: un hilo no puede adquirir un bloqueo de sincronización sincronizado (debido a que el bloqueo está ocupado por otros hilos), ingresará a un estado de bloqueo sincronizado.
(03) Otro bloqueo: el hilo ingresará a un estado de bloqueo llamando a dormir () o unirse () del hilo o emitir una solicitud de E/S. Cuando el estado de sueño () se agotó, unirse () esperó a que el hilo termine o se agotara, o se completó el procesamiento de E/S, el hilo volvió a ingresar al estado listo.
5. Estado muerto: el hilo ha terminado de ejecutar o salir del método Run () debido a una excepción, y el hilo finaliza su ciclo de vida.
Los contenidos involucrados en estos 5 estados incluyen la clase de objeto, el hilo y las palabras clave sincronizadas. Aprenderemos estos contenidos uno por uno en los siguientes capítulos.
Clase de objeto, define las funciones de sueño/vigilia como Wait (), notificar (), notifyall (), etc.
La clase de subprocesos define algunas funciones de operación de subprocesos de columna. Por ejemplo, función de sueño sleep (), interrupción () función de interrupción, getName () obtenga el nombre del hilo, etc.
Sincronizado es una palabra clave; La función de sincronizado es permitir que los hilos adquieran el bloqueo de sincronización del objeto.
Cuando presentamos Wait (), notify () y otros métodos en detalle más adelante, analizaremos por qué "Wait (), notificar () y otros métodos deben definirse en la clase de objeto, no la clase de subprocesos".