130 likes | 341 Views
Ciclo de vida e escalonamento de Threads. Professor: Hyggo Almeida. O que vimos na última aula ?. Threads Introdução Implementação. O que veremos hoje ?. Threads Ciclo de vida Escalonamento. Ciclo de vida de uma thread. Diagrama de estados.
E N D
Ciclo de vida e escalonamento deThreads Professor: Hyggo Almeida
O que vimos na última aula? • Threads • Introdução • Implementação Ciclo de vida e escalonamento deThreads
O que veremos hoje? • Threads • Ciclo de vida • Escalonamento Ciclo de vida e escalonamento deThreads
Ciclo de vida de uma thread • Diagrama de estados Escalona a thread para executar (método run) Qualquer outra operação causa IllegalThreadStateException sleep/wait start New Thread Runnable Not Runnable Ou há uma chamada de sistema que o deixa lento (I/O) run Tempo passou; notify chamado; I/O terminou Thread myThread = new Thread(“mine”); Dead Fim da execução do método run Ciclo de vida e escalonamento deThreads
Ciclo de vida de uma thread • Parando uma thread... • Não utilizar o método stop() • Depreciado • Problemas de segurança • Finalize a execução através da finalização do método run() • Deixe o coletor de lixo fazer o restante do trabalho • myThread = null; Ciclo de vida e escalonamento deThreads
Ciclo de vida de uma thread • Estado atual da thread... em Java • Método isAlive() • truesignifica que o estado é RUNNABLE ou NON-RUNNABLE • Em Java 5 há o método getState() • NEW • RUNNABLE • BLOCKED • WAITING • TIMED_WAITING • TERMINATED
Escalonamento de threads • Emumaúnica CPU tem-se umailusão de paralelismo • Mesmo com várias CPUs pode haver mais threads a serem executadas • O ilusionismo aqui é realizado através de escalonamento • JVM – Escalonamento com prioridades fixas Ciclo de vida e escalonamento deThreads
Escalonamento de threads • JVM – Escalonamento com prioridades fixas • Quando uma thread é criada possui a prioridade da thread na qual foi criada • O método setPriority pode ser usado para definir prioridades entre MIN_PRIORITY e MAX_PRIORITY • Quanto maior o valor, mais prioritária é a execução de uma thread em relação às outras • Quando a CPU procura uma thread, escolhe o de maior prioridade que esteja pronto para executar • Se as prioridades são iguais, escolhe-se aleatoriamente Ciclo de vida e escalonamento deThreads
Escalonamento de threads • JVM – Escalonamento com prioridades fixas • A thread executa até que... • ...uma thread de mais alta prioridade se torna pronta para rodar (preemption) • ...ela ceda a CPU (chamando o método yield()) • ...o método run()termine (DEAD) • ...sua fatia de tempo acabe (time slicing) • Neste momento outro thread pode executar seguindo a ordem de prioridades Ciclo de vida e escalonamento deThreads
Escalonamento de threads • Time Slicing • Definição de fatias de tempo • Para evitar threads egoístas • Pode-se tomar o controle da CPU • Sistema operacional com suporte a threads • Força que as threads da JVM tenham fatias de tempo • O método yield() pode ser usado para realizar o time slicingno nível da JVM Ciclo de vida e escalonamento deThreads
O que vimos hoje? • Threads • Ciclo de vida • Escalonamento Ciclo de vida e escalonamento deThreads
O que veremos na próxima aula? • Threads • Sincronização Ciclo de vida e escalonamento deThreads
Dúvidas? ? Ciclo de vida e escalonamento deThreads