Multithreading é um assunto inevitável e importante em Java. Abaixo, desenvolveremos o aprendizado de multi-threading. O conteúdo a seguir é uma explicação do conteúdo multi-thread Java antes de "Adicionar pacotes JUC no JDK", que inclui interfaces como Wait (), notify () na classe de objeto;
Nota: O pacote JUC refere -se ao pacote java.util.Concurrent, que é feito pelo mestre Java Doug Lea e adicionado ao Java na versão JDK 1.5.
Antes de entrar no estudo dos capítulos seguintes, primeiro entenda alguns conceitos relacionados de multithreading.
Diagrama de status do thread
ilustrar:
Os tópicos incluem os 5 estados a seguir.
1. Novo Estado: Depois que o objeto Thread for criado, ele entra no novo estado. Por exemplo, Thread Thread = new Thread ().
2. Runnable: Também conhecido como "Estado executável". Depois que o objeto Thread for criado, outros threads chamam o método START () do objeto para iniciar o thread. Por exemplo, thread.start (). Um tópico em um estado pronto pode estar programado para executar pela CPU a qualquer momento.
3. Estado em execução (em execução): o encadeamento obtém permissões de CPU para execução. Deve -se notar que os threads só podem entrar no estado em execução do estado pronto.
4. Estado bloqueado: Estado bloqueado significa que o thread renuncia aos direitos de uso da CPU por algum motivo e para temporariamente a execução. Não é até o encadeamento entrar no estado pronto que ele tem a chance de ir ao estado de corrida. Existem três tipos de bloqueio:
(01) Esperando para bloquear - chamando o método Wait () Thread's Wait (), deixe o tópico aguarde a conclusão de um determinado trabalho.
(02) Bloqueio sincronizado-Um encadeamento falha ao adquirir trava de sincronização sincronizada (porque a trava é ocupada por outros threads), ele entrará em um estado de bloqueio sincronizado.
(03) Outro bloqueio-o thread entrará em um estado de bloqueio ligando para o sono () ou ingressar () do thread ou emitindo uma solicitação de E/S. Quando o Sleep () State Tropous Out, ingressou () esperou que o Thread termine ou o tempo ou o processamento de E/S tenha sido concluído, o thread reinseriu para o estado pronto.
5. Estado morto: o thread terminou de executar ou sair do método run () devido a uma exceção e o thread termina seu ciclo de vida.
O conteúdo envolvido nesses 5 estados inclui a classe de objeto, encadeamento e palavras -chave sincronizadas. Aprenderemos esses conteúdos um por um nos capítulos seguintes.
Classe de objeto, define funções de sono/vigília como wait (), notify (), notifyAll (), etc.
A classe Thread define algumas funções de operação do encadeamento da coluna. Por exemplo, Sleep () Sleep Function, interrupt () Função de interrupção, getName () Get thread Name, etc.
Sincronizado é uma palavra -chave; A função de sincronizada é permitir que os threads adquiram o bloqueio de sincronização do objeto.
Quando introduzirmos wait (), notify () e outros métodos em detalhes posteriormente, analisaremos por que "wait (), notify () e outros métodos devem ser definidos na classe de objeto, não na classe de threads".