Ciclo de vida e escalonamento deThreads

Propaganda
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
2
O que veremos hoje?
Threads
¤  Ciclo de vida
¤  Escalonamento
Ciclo de vida e escalonamento deThreads
3
Ciclo de vida de uma thread
Diagrama de estados
Escalona a thread para
executar (método run)
Qualquer outra operação causa
IllegalThreadStateException
New Thread
start
Runnable
run
Thread myThread =
new Thread(“mine”);
Ciclo de vida e escalonamento deThreads
Dead
sleep/wait
Not Runnable
Ou há uma chamada de
Tempo passou;
sistema notify
que o deixa lento (I/O)
chamado; I/O terminou
Fim da execução do
método run
4
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
5
Ciclo de vida de uma thread
Estado atual da thread... em Java
¤  Método isAlive()
¤ 
¤ 
true significa que o estado é RUNNABLE ou
NON-RUNNABLE
Em Java 5 há o método getState()
¤ 
¤ 
¤ 
¤ 
¤ 
¤ 
NEW
RUNNABLE
BLOCKED
WAITING
TIMED_WAITING
TERMINATED
6
Escalonamento de threads
Em uma única CPU tem-se uma ilusã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
7
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
8
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
9
Escalonamento de threads
Time Slicing
¤  Definição de fatias de tempo
¤ 
¤ 
Sistema operacional com suporte a threads
¤ 
¤ 
Para evitar threads egoístas
¤  Pode-se tomar o controle da CPU
Força que as threads da JVM tenham fatias de
tempo
O método yield() pode ser usado para
realizar o time slicing no nível da JVM
10
Ciclo de vida e escalonamento deThreads
O que vimos hoje?
Threads
¤  Ciclo de vida
¤  Escalonamento
Ciclo de vida e escalonamento deThreads
11
O que veremos na próxima aula?
Threads
¤  Sincronização
Ciclo de vida e escalonamento deThreads
12
Dúvidas?
?
Ciclo de vida e escalonamento deThreads
13
Download