1, cinco estados tópicos
-
New (Nova): criar um novo objeto de discussão.
-
Run (RUNNABLE): Depois que o objeto segmento é criado, outros segmentos (como o thread principal) chama o método start () do objeto. O estado do segmento está localizado segmentos executáveis na piscina, à espera de ser selecionado agendamento de segmento, adquirindo o direito de uso da CPU.
-
Run (correr): executável (Runnable) tópicos obtidos de fatia de tempo da CPU (timeslice), a execução de código do programa.
-
Bloqueado (BLOQUEADO): bloqueio de estado é o fio por algum motivo a desistir do direito de uso da CPU, que é deixado fora do timeslice cpu, interromper temporariamente a execução. Até que o segmento torna-se estado executável (executável), tem uma chance de obter cpu timeslice para run (corrida) estado novo. Caso de obstrução das três categorias:
(A) bloqueou esperando: rosca o.wait do método run () de execução (em execução), JVM vai enfiar na fila de espera (waitting fila) no.
(B) de bloqueio síncrono: segmento em execução (em execução), quando a aquisição de sincronização de objeto de bloqueio, se o bloqueio de sincronização está ocupado por outro segmento, a JVM se encaixará no pool de threads (piscina lock) no.
(3) Outros bloqueio: em execução (em execução) método de execução fio Thread.sleep (longos ms) ou t.join (), ou emitir o pedido I / O, a JVM irá definir o segmento está bloqueado. Quando o sono () tempo de espera, o Junte () espera por uma rosca de terminar ou o tempo limite, ou quando o processamento de I / O está completa, o fio pode ser re-correr em estado (Execut�el). -
(DEAD) Morte: Linha de execução (), o método principal () tiver terminado a execução, ou devido a anormal retirou-se o método de execução (), a ponta do fio do ciclo de vida. Tópico da morte não pode ser ressuscitado novamente.
2, a diferença entre o sono e espera
1, o sono é um método da classe Thread (Thread), e wait () é o método classe Object
2, sono, chamada espera fará uma pausa após o tempo de execução thread atual e deixar a CPU, mas a diferença é que o sono não vai liberar a corrente recurso bloqueio mantido pelo objeto, após o que ele vai continuar, mas vai esperar e dar-se todas as fechaduras precisa notificar / notifyAll para re-adquirir os recursos objeto de bloqueio antes de poder continuar.
3, sono anomalia a ser capturada, e espera, notificar e notifyAll necessário para capturar exceções, você deve sincronizar com as declarações no bloco.
3, sono, rendimento, juntar-se analiticamente
1, dormir
o papel do método de sono é de suspender o tempo segmento especificado atual (em milissegundos), o método de sono é a maneira mais fácil, no exemplo acima, também é usado antes, mais fácil de entender. A única ressalva é a diferença entre a abordagem de espera. A diferença mais simples é, o método de espera depende de sincronização e método de sono pode ser chamado diretamente. O sono mentiras diferença mais profunda é um método temporário para permitir a execução da CPU, não liberar o bloqueio. O método de espera terá de liberar o bloqueio.
2, rendimento
método de rendimento de ação é para suspender a thread atual, para que outros tópicos têm a chance de realizar, mas não é possível especificar o tempo de pausa, e não há nenhuma garantia para a parada thread atual imediatamente. método de rendimento simplesmente Correr estado para Executel.
3, junte-se
a ação se juntar método é a espera segmento pai para a criança completa antes de executar a execução de thread, em outras palavras, threads de execução assíncronas serão fundidos em fio síncrona.
4, esperar e notificar / notifyAll Método Analítico
Notificar e notifyAll diferença é que o primeiro só pode despertar uma discussão sobre o monitor, nenhum efeito sobre o outro segmento, notifyAll acorda todas as threads.
(1) Depois de chamar método de espera, o segmento vai abdicar da propriedade do objeto monitor.
(2) bloqueado por um método espera segmento, as seguintes condições devem ser cumpridas a fim de ser verdadeiramente executar:
necessidades de rosca ser acordado (ou tempo limite chamada wake-up para notificar / notifyll).
Concorrência deve bloqueio (monitor) depois que o segmento acorda.