A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Programação com Threads

Apresentações semelhantes


Apresentação em tema: "Programação com Threads"— Transcrição da apresentação:

1 Programação com Threads
Threads Java como um Estudo de Caso

2 Estados de uma Thread Java
O diagrama seguinte mostra os estados nos quais uma thread Java pode estar e alguns métodos que podem ser usados para mudar de um estado para outro.

3 Ciclo de Vida de Java Threads
Nova Dormindo Pronta Terminado Em Espera Executando Bloqueada Morto

4 Nova Thread - NEW Inicialização da thread –
Feita através do construtor Thread(). class MyThreadClass extends Thread{ } MyThreadClass myThread = new MyThreadClass();

5 NEW  RUNNABLE (Executável)
Neste estado de NEW (Nova), nenhum recurso do sistema foi alocado para a thread, ainda. Assim, a partir daqui, tudo que você pode fazer é um start()para ativar a thread, e a thread passa a um estado RUNNANLE (estado Ready), ou um stop(), para "matá-lo". A chamada de qualquer outro método não faz sentido e levantará a exceção IllegalThreadStateException.

6 Estado de RUNNABLE (Pronto)
Quando uma thread entra pela primeira vez no estado RUNNABLE a partir do estado “NEW”, ela vai para o estado de “Ready”, que a JVM não vê. Este é o estado em que o thread está pronta para rodar, mas não tem os recursos do SO para ser executada. O método start()requisita os recursos do SO, necessários para rodar a thread e chama o seu método run(). O método run() é a "alma" de uma thread. É neste método que definimos o que o thread vai executar. Thread myThread = new MyThreadClass(); myThread.start();

7 Falamos em “Ready“ (Pronto), porque a thread pode não estar realmente sendo executada no estado de Ready (Pronto). Imagine um computador com um único processador - seria impossível executar todos as threads “prontas" ao mesmo tempo. O que ocorre é que o processador deve ser escalonada entre as vários threads.

8 Estado Running (Executando)
Quando o Scheduler escalona uma thread para o processador, esta passa ao estado de “Running”. Quando uma thread está em “Running” (Executando), as instruções do seu método run() estão sendo executadas pelo processador.

9 Running  Ready Se uma thread está no estado “Running”, ela pode passar ao estado “Ready” , se um método yield()for executado. Ou pode passar do estado “Running” para o estado NOT-RUNNABLE.

10 Em NOT-RUNNABLE O estado NOT-RUNNABLE significa que a thread está impedido de executar por alguma razão. Existem 3 maneiras através das quais um thread ir para um estado NOT-RUNNABLE: A thread executa um método sleep() O thread bloqueia, esperando por I/O. O thread usa seu método wait() para esperar por uma condição.

11 Estados NOT-RUNNABLE (Suspenso)
“Dormindo” – TIME-WAITING - em espera temporizada; a thread executou o método sleep(). Para retornar de “Dormindo”, tempo tem que terminar. “Bloqueado” – BLOCKED - aguarda I/O; I/O precisa ser completado. Para retornar de I/O, o I/O tem que terminar. “Em Espera” - WAITING - a thread executou um método wait(); aguarda uma condição ser satisfeita; o objeto que a "segura" precisa liberá-la, através de um método notify() ou de um método notifyAll()

12 Saindo de NOT-RUNNABLE
Para cada forma de entrar no estado Non-Runnable, alguma forma específica fará o thread retornar para o estado Runnable. Veremos detalhes adiante quando falarmos de sincronização de thread .

13 Arquitetura do Pool de Threads
Uma das possíveis arquiteturas baseadas em Threads, chama-se Pool de Threads. Um Pool de Threads é criado e gerenciado quando o aplicativo é executado.

14 Pool de Threads Em sua forma mais simples, o aplicativo cria um “Pool de Threads Trabalhadoras” para processar os pedidos de execução de threads. No caso de haver um número fixo de threads trabalhadoras, com menos threads do que o número de threads que pedem execução, a thread requerendo execução será colocada numa fila e atribuída à primeira thread trabalhadora que completar sua tarefa.


Carregar ppt "Programação com Threads"

Apresentações semelhantes


Anúncios Google