Programação com Threads

Slides:



Advertisements
Apresentações semelhantes
Sistemas Operacionais - Aula 6
Advertisements

Sistemas Operacionais
CONTROLE DE CONCORRÊNCIA
Introdução à Threads para Windows na linguagem C
Threads (Linha de execução )
Profa. Priscila Facciolli
Gerência de Processos no Linux Prof. Antônio Rogério Ramos Pelo menos esse, fui eu que fiz!!!
Arquitetura de Sistemas Operacionais
Arquitetura de Sistemas Operacionais
Problemas com Threads MO801/MC972. Muitas threads Se algumas threads ajudam o programa, muitas threads devem ajudar mais –Certo? O overhead de escalonamento.
Capítulo 7: Deadlocks.
Threads Estagiário: Bruno Guazzelli Batista Slides de autoria do Prof Drº Marcos José Santana baseados no livro Sistemas Operacionais Modernos de A. Tanenbaum.
SSC SISTEMAS OPERACIONAIS I
SSC SISTEMAS OPERACIONAIS I
Walfredo Cirne Threads Walfredo Cirne
Programação Concorrente
Processos Conceitos Básicos.
Threads.
Sistemas Operacionais Adriana Vettorazzo
Threads sem Sincronização
Sincronização de Threads
O Mecanismo de Threads em Java 2. Criar uma classe herdeira da super classe Thread public class minhaThread extends Thread{ public class minhaThread extends.
Concorrência em Java Threads em Java.
Threads: Introdução e Implementação
Monitores.
Concorrência em Java Threads em Java.
Unidade 1-1 Processos e Threads
Concorrência em Java Threads em Java.
Infra-Estrutura de Comunicação (IF678)
Sistemas Operacionais
Sistemas Operacionais
Unidade 2 - Parte 1 Programação Concorrente
Concorrência STRD.
Processos.
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Classes e Objetos em Java.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Computação L1: Infra-Estrutura Básica
Sistemas Operacionais
Escalonamento de Processos e Threads
Processos.
Introdução às Java Threads
Aula Prática 4 Monitoria IP/CC (~if669).
SISTEMAS OPERACIONAIS I
Sistemas Concorrentes Capítulo 02 – Threads
Conceitos de thread Faculdade PITÁGORAS – Outubro de 2012
Sistemas Operacionais
S ISTEMAS OPERACIONAIS PROCESSOS Horácio Ribeiro.
I={a1,a2,a3} O={d2,d1,p,s1,s2} ANDAR DESEJADO DIREÇÃO E NÚMERO DE ANDARES Finite State Process 1° Exercício E a1 a2 a3 Prédio.
Sistemas Distribuídos Aula 05 – Programação Multithread/Paralela
Aula prática de Concorrência Equipe de Monitoria: Bruno Pereira - bpe Davi Pires - dpr Guilherme Barros – gbs2 Thiago Cavalcanti - trc.
MO801: Tópicos em Arquitetura e Hardware 1 Tópicos em System-Level Design Sandro Rigo 2 o Semestre.
Escalonamento de Tarefas com Compartilhamento de Recursos André Luis Meneses Silva.
Python Threads e Socket
Grupos de Threads em Java
Programação com Threads Threads Java como um Estudo de Caso.
Bruno Affonso Diego Chiquito Ruan Berté.   O código de Escalonamento no Windows é implementado no Kernel.  A rotina que desempenha as tarefas do Escalonador.
Gerenciamento de Memória Sistemas Recentes
Redes e Sistemas Distribuídos II – Cód Prof. MSc. Ronnison Reges Vidal.
Elementos de Informática
Capítulo 8 Threads.
Infra-Estrutura de Comunicação (IF678) Aula Prática 03 – CIn/UFPE Davi Duarte Cynthia Raphaella Ivan França Jéssica Barbalho Larissa Paz Paulo Fernando.
Sistemas Operacionais Multimídia Aula 12. Gerência de Processos Mapeamento de processos sobre recursos de acordo com política de escalonamento Possíveis.
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
Bruna Cavallero Martins Universidade Católica de Pelotas.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais IESP - FATEC-PB Professor: Gustavo Wagner.
ProgramaçãoConcorrente Glêdson Elias
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
ProgramaçãoConcorrente Glêdson Elias
Transcrição da apresentação:

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

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.

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

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

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.

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();

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.

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.

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.

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.

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()

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 .

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.

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.