Lo primero que debe tener en cuenta es que el estado referenciado es el estado del subproceso JVM, no el estado del subproceso del sistema operativo. Al mismo tiempo, un hilo solo existirá en un estado.
Estado del hilo, estado enum:
1 、 NUEVO
Se ha creado y no se está ejecutando.
2 、 RUNNABLE
El hilo se está ejecutando en la JVM.
3 、 BLOQUEADO
Bloque en espera de que el bloqueo del monitor ingrese o vuelva a ingresar bloque o método sincronizado sincronizado, activado por Object.wait.
4 、 ESPERANDO
Métodos de activación: Object.wait, join (), LockSupport.park
Espere a que otro hilo termine una tarea específica.
Por ejemplo: un
subproceso ejecuta Object.wait, espera a que otro subproceso finalice la ejecución y se activa ejecutando Object.notify u Object.notifyAll para continuar la ejecución;
El hilo ejecuta Thread.join, esperando la finalización de la ejecución de un hilo específico.
5 、 TIMED_WAITING
Esperando el límite de tiempo.
触发 方法 : Thread.sleep 、 Object.wait (tiempo de espera) 、 Thread.join (tiempo de espera) 、 LockSupport.parkNanos 、 LockSupport.parkUntil。
6 、 TERMINADO
El estado del hilo de la tarea completada.
Nota:
1. El método thread Thread.getState obtiene el estado actual del hilo. Este método se usa para monitorear el estado del sistema, no para sincronizar el control.
2. El método Unsafe.park suspende el hilo.
3. El método Thread.join llama internamente al método Object.wait para lograr la espera.
4. El estado BLOQUEADO enfatiza que está esperando ingresar a la lógica de sincronización.