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

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

Concorrência em Java Threads em Java.

Apresentações semelhantes


Apresentação em tema: "Concorrência em Java Threads em Java."— Transcrição da apresentação:

1 Concorrência em Java Threads em Java

2 Máquina Virtual Java, Processos e Threads
Cada instância da JVM corresponde a um processo do sistema operacional hospedeiro. A JVM não possui o conceito de processos – apenas implementa threads internamente.

3 Máquina Virtual Java, Processos e Threads
Ao ser iniciada, a JVM executa o método main() do programa na thread principal, e novas threads podem ser criadas a partir desta. Threads de uma mesma JVM compartilham memória, portas de comunicação, arquivos e outros recursos.

4 Prioridade de Threads Valor de 1 a 10; 5 é o default.
Threads herdam prioridade da thread que a criou. Modificada com setPriority(int) . Obtida com getPriority() .

5 Prioridades de Threads
10 -> A -> B 9 C 8 7 D -> E -> F 6 G 5 H -> I 4 3 > J -> K 1

6 Escalonamento de Threads
Threads com prioridades iguais são escalonadas em round-robin (rodízio), com cada uma ativa durante um quantum.

7 Escalonamento Pre-Emptivo
Threads de alta prioridade são executadas por um quantum, no esquema de rodízio até que as threads sejam concluídas.

8 Threads Implementação de Threads no Java Green Threads Threads Nativas
Usadas em sistemas sem suporte a threads. Threads e escalonamento implementados pela máquina virtual Java. Threads Nativas Usa threads nativas e escalonador do S.O. Usada nos sistemas suportados oficialmente. Linux, Solaris e Windows Ideal em máquinas com >1 processador.

9 Ciclo de Vida de uma Thread

10 Estados das Threads em Java
Nascimento Pronta: poderia ser executada, mas o processador está ocupado. Em execução: quando está rodando. Suspensa: Bloqueada: aguarda operação de I/O. Em Espera: aguarda alguma condição. Dormindo: suspensa por um tempo de adormecimento. Morta, quando é terminada.

11 Principais métodos de java.lang.Thread
run() contém o código executado pela thread. start() dispara a execução de uma thread, que por sua vez chama o método run().

12 Outros métodos de java.lang.Thread
setName: configura o nome de uma thread. getName devolve o nome de uma thread. currentThread() devolve uma referência da thread em execução. sleep() especifica quanto tempo a thread deve dormir. interrupt() interrompe uma thread.

13 Outros métodos de java.lang.Thread
isInterrupted determina se a thread foi interrompida. isAlive() devolve true se a thread não estiver morta. join() espera que a thread para a qual uma msg foi enviada, morra antes que a thread chamadora possa prosseguir.

14 Outros métodos de java.lang.Thread
wait a thread entra num estado de espera por um recurso/objeto particular para o qual o wait foi chamado. notify a thread em estado de espera torna-se pronta quando uma chamada notify é emitida por outra thread associada com aquele recurso/objeto. notifyAll todas as threads em estado de espera por um objeto tornam-se prontas quando notifyAll é feita por outra thread associada com aquele objeto.

15 Nome da Thread Identificador não-único da Thread.
Pode ser definido ao criar a Thread com Thread(String) ou Thread(Runnable, String) Se não for definido na criação, o nome da Thread será “Thread-n” (com n incremental) Pode ser redefinido com setName(String) Pode ser obtido através do método getName()

16 Threads na Linguagem Java
O conceito de thread está presente em Java através da classe java.lang.Thread . Java também oferece : Mecanismos para sincronização e controle de concorrência entre threads. Classes para gerenciamento de grupos (pools) de threads. Classes da API que podem ser acessadas concorrentemente.

17 Gerenciando Grupos de Threads
java.lang.Object java.util.concurrent.Executors A classe Executors estende a classe raiz Object. A classe Executors gerencia um grupo de threads. Interface Executor Interface ExecutorService


Carregar ppt "Concorrência em Java Threads em Java."

Apresentações semelhantes


Anúncios Google