Status do encadeamento JAVA (Novo, Executável, Bloqueado, Aguardando, Espera cronometrada, Encerrado)

Visão geral do estado do encadeamento Java

Em Java, os encadeamentos da JVM podem ter os seguintes 6 estados (somente o estado em JAVA, não o estado do sistema operacional SO) :
 
  • Novo ( recém-criado )
  • Executável _ _ _
  • Bloqueado _ _
  • Esperando _ _ _
  • Tempo de espera _ _ _
  • Rescindido _ _ _

Veja a figura para detalhes (fonte da figura: https://www.uml-diagrams.org/java-thread-uml-state-machine-diagram-example.html )

Exemplo de máquina de estado de protocolo - Estados de encadeamento e ciclo de vida em Java.

nova nova criação

    Crie um objeto Thread, mas antes de chamar start() para iniciar o thread, o thread está no estado inicial.

executável pode executar

Em Java, o estado executável inclui: Pronto e Em execução

  • estado pronto
    • A thread neste estado obteve todos os recursos necessários para a execução, e a CPU pode rodar desde que o direito de execução seja alocado.
    • Todos os threads prontos são armazenados na fila pronta.
  • Correndo
    • O thread que obteve o direito de execução da CPU e está sendo executado pela CPU.
    • Como uma CPU só pode executar um thread por vez, cada CPU tem apenas um thread em execução por vez.
    • A execução da CPU pode ser abandonada pelo rendimento (por exemplo, em um sistema operacional não preemptivo, o thread em execução precisa desistir ativamente da CPU)

Bloqueado está bloqueado

    Observe que é uma voz passiva.Quando um thread em execução falha ao solicitar um determinado recurso, ele entrará em um estado bloqueado.

  • Em Java, o estado de bloqueio refere-se ao estado que é forçado a entrar quando o pedido de bloqueio falha. (Normalmente: bloqueios, IO, Socket, etc. são todos recursos. Mas aqui apenas os bloqueios estão envolvidos)
  • Todos os threads bloqueados são armazenados em uma fila de bloqueio.
  • Uma thread no estado bloqueada continuará solicitando recursos. Uma vez que a requisição for bem-sucedida, ela entrará na fila Runnable-Ready ready e aguardará a execução.

Esperando

  • Quando as funções wait, join e park são chamadas no thread atual, o thread atual entrará no estado de espera.
  • Há também uma fila de espera para armazenar todos os threads em espera.
  • Um thread no estado de espera significa que ele precisa aguardar instruções de outros threads para continuar executando. Precisa ser acordado por outros tópicos.
  • Os threads que entram no estado de espera liberam os direitos de execução da CPU e liberam recursos (como bloqueios)

espera cronometrada

  • Quando o thread em execução chamar sleep(time), wait, join, parkNanos, parkUntil, ele entrará neste estado;
  • É o mesmo que o estado de espera, não porque os recursos não possam ser solicitados, mas para entrar ativamente. 
  • Após entrar neste estado, o direito de execução da UCP e os recursos ocupados são liberados.
  • A diferença do estado de espera: ele pode entrar automaticamente em Runnable-Ready após o tempo definido

Terminado _

Incluindo o encerramento natural da operação ou o encerramento sem captura de exceção.

 

-------------------------------------------------- -------------------------------------------------- -------

além disso:

   A interrupção é um mecanismo, que é um conceito em um nível diferente do estado do encadeamento aqui. 

  Quando o método de interrupção é chamado em um thread, o status de interrupção do thread é definido. Este é um sinalizador booleano que cada thread possui. Cada encadeamento deve verificar esse sinalizador de tempos em tempos (como um loop while) para determinar se o encadeamento foi interrompido. Entretanto, se o thread estiver bloqueado, não há como detectar o status da interrupção. É aqui que a exceção InterruptedExceptionioii é levantada. Quando o método de interrupção é chamado em um thread bloqueado (chamando sleep ou wait), a chamada de bloqueio será interrompida por uma exceção interrompida.

  

   

 

Acho que você gosta

Origin blog.csdn.net/zyplanke/article/details/113821440
Recomendado
Clasificación