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

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

Concorrência em Java Threads em Java. Máquina Virtual Java, Processos e Threads – Cada instância da JVM corresponde a um processo do sistema operacional.

Apresentações semelhantes


Apresentação em tema: "Concorrência em Java Threads em Java. Máquina Virtual Java, Processos e Threads – Cada instância da JVM corresponde a um processo do sistema operacional."— 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 – 2 -> 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 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 java.lang.Object 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. Máquina Virtual Java, Processos e Threads – Cada instância da JVM corresponde a um processo do sistema operacional."

Apresentações semelhantes


Anúncios Google