Programação Concorrente com Thread Java

Slides:



Advertisements
Apresentações semelhantes
Projeto de Sistemas de Software Luana Lachtermacher
Advertisements

1 Java: Tratamento de Exceções Alcides Calsavara.
Programando com Threads em C
1 Estruturas de Controle Márcia J. N. Rodrigues Lucena Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento.
Ronaldo Celso Messias Correia
Técnicas e Projeto de Sistemas André Mesquita Rincon Processo de Software Técnico Subsequente – Módulo III.
Introdução a Resolução Numérica de Equações Diferenciais Ordinárias
FORTRAN 90 Denise Yumi Takamura.
INTRODUÇÃO À COMPUTAÇÃO PARALELA
Modularização de Código. Modularizar código Construção do algoritmo em um módulo único (Início...Fim/ Program... End) Único arquivo.
Introdução à Lógica de Programação
Container Managed Persistent Bean Kellyton Brito Projeto Compose
Prof. Dr. Helder Anibal Hermini
Prof. Dr. Helder Anibal Hermini
Análise e Solução de Problemas
Treinamento no GRADEp Serviço Executor ExecutorDemo.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Aplicação GeneAl Treinamento no GRADEp Aplicação GeneAl.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Treinamento no GRADEp Framework Master-Worker.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço Collector Treinamento no GRADEp Serviço Collector CollectorDemo e.
Treinamento no GRADEp GRADEp Desktop DesktopSwing.
Servidores e Programação Web Redes de Computadores.
Profa. Graziela Santos de Araújo Algoritmos e Programação II, 2010
Templates e Questões de Design Programas são geralmente construídos segundo um design que é relativamente bem mapeado nos mecanismos oferecidos pela linguagem.
Funções de um computador
Sistemas de Tutoria Inteligente (STI) Visam proporcionar instrução de forma adaptada a cada aprendiz. STIs adaptam o processo de instrução a determinadas.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo III Comandos de Controle.
1.3 – Interpretadores – Compiladores versus Interpretadores
CE-262 Ontologia e Web Semântica Prof. José M Parente de Oliveira Sala 120 – Prédio da Computação Lógica de Descrições.
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
Estudo Certificação Java
Curso Técnico em Informática La Salle - Canoas
FERRAMENTAS DE CRIATIVIDADE
Business Process Management e Workflow - jBPM Aluno: Filipe Ferraz Salgado Orientador: Francisco Reverbel Novembro 2006.
EEL170 COMPUTAÇÃO I Antonio Cláudio Gómez de Sousa 5a série de slides Versão 26/04/2012.
ALOCAÇÃO DINÂMICA DE MEMÓRIA
Organização de Sistemas de Computadores
C/C++.
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Tecnologia para Web JavaScript Enrique Pimentel Leite de Oliveira
Recursividade Estrutura de Dados.
Adriano Santiago Wilber Garcia Pereira
Elaine Harada Teixeira de Oliveira – DCC – ICE - UFAM
Orientação a Objetos Uma Introdução à Programação Orientada a Objetos
Entendendo as definições de classe
Curso de Programação em C++ Universidade Federal do Ceará Departamento de Engenharia Estrutural e Construção Civil Prof: Evandro Parente Junior Monitor:
Curso de Programação em C++ Universidade Federal do Ceará Departamento de Engenharia Estrutural e Construção Civil Prof: Evandro Parente Junior Monitor:
Baseado no documento do Prof. Ronaldo Martins da Costa
LINGUAGENS DE PROGRAMAÇÃO
Baseado no documento do Prof. Ronaldo Martins da Costa
Sistemas Operacionais e Windows XP Aula 04 – DCA0302.
04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream.
Sistemas de Informação Prof. Me. Everton C. Tetila Modelo de dados relacional Banco de Dados I.
Objetos Distribuídos - Programação Distribuída Orientado a Objetos Luiz Affonso Guedes.
Introdução Ciência da Computação estudo de algoritmos –ÊNFASE ao estudo de DADOS armazenamento manipulação refinamento (a partir de dados cru) estrutura.
8. Uma Função de duas Variáveis Aleatórias
Concorrência em Java Threads em Java.
Professor: Hyggo Almeida
Concorrência em Java Threads em Java.
Threads, Gerenciamento de Threads Pool de Threads, Grupo de Threads Variáveis Locais à Threads.
Sincronização com Locks. Locks É um mecanismo de sincronização de processos/threads em que estas devem ser programadas de modo que seus efeitos sobre.
Concorrência em Java Threads em Java.
JAVA MULTITHREADING TECHNIQUES
Java em Redes de Computadores
Scala Bruno Barros e Rebeka Gomes
Mapeamento de CSP para JCSP Patrícia Muniz (pmf) Rafael Duarte (rmd)
Java Generics Adeline de Sousa Silva.
ArrayList e Genéricos Profs. PROG2 - UNISINOS.
Alisson Rafael Appio SOP aplicado em um jogo tipo de corrida usando a arquitetura cliente e servidor Alisson Rafael Appio
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
Programação em Java Threads Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.
Transcrição da apresentação:

Programação Concorrente com Thread Java Luiz Affonso Guedes Sistemas Distribuidos

Definições Básicas Threads são sub-procesos no sistema operacional. É menos custoso gerenciar threads do que processos. As linguagens Java e Ada possuem funcionalidades MULTITHREADING na própria estrutura da linguagem. C e C++ necessitam de biblioteca especifica para processamento MULTITHREADING Posix p_thread

Thread em Java Em Java, threads são implementadas como uma CLASSE Pacote java.lang.Thread É uma extensão da classe Thread Contrutores: public Thread (String nome_da_thread); public Thread ( ); // o nome sera Thread-# Thread-1, Thread-2,…

Principais Métodos run(): é o método que executa as atividades de uma THREAD. Quando este método finaliza, a THREAD também termina. start(): método que dispara a execução de uma THREAD. Este método chama o método run( ) antes de terminar. sleep(int x): método que coloca a THREAD para dormir por x milisegundos.

Principais Métodos join( ): método que espera o término da THREAD para qual foi enviada a mensagem para ser liberada. interrupt( ): método que interrompe a execução de uma THREAD. interrupted( ): método que testa se uma THREAD está ou não interrompida.

Estados de uma Thread em Java nascimento Término do tempo de dormida start( ) Fim da E/S notify( ) pronta notifyAll( ) run( ) Alocar um processador executando wait( ) E/S sleep( ) Fim do Método run( ) esperando dormindo morta bloqueada

Prioridade de Thread Em Java, a prioridade é determinada com um inteiro entre 1 e 10. A prioridade padrão é o valor 5. 10 é a maior prioridade e 1 é a menor. A THREAD herda a prioridade da THREAD que acriou. void setPriority(int prioridade); int getPriority( );

Algoritmo de Escalonamento Prioridade 10 Prioridade 1 Prioridade 9 Prioridade 8 Prioridade 2 Prioridade 3 . A B C D E F G

Exemplo 01 O programa cria 04 threads e as coloca para dormir. ThreadBasica é uma extensão da classe Thread.

Exercício 01 Analise como se chama o método sleep(). Crie n THREADs, onde n é definido pelo usuário. Utilize o método join no main para esperar as THREADs terminarem. try { uma_thread.join( ); // uma_thread.join(tempo) . . . } catch (InterruptedException e) { … }

Escalonamento de Threads Prioridade 10 Prioridade 1 Prioridade 9 Prioridade 8 Prioridade 2 Prioridade 3 . A B C D E F G

Exemplo 02 Prioridades de Threads Utilize o método setPriority(int) para mudar a prioridade de threads Utilize 01 thread com prioridade 1, 01 com prioridade 09 e as outras com prioridade 5. Faça com que uma das threads de alta prioridade durma por 10 ms antes de terminar. Faça com que outra thread de alta prioridade faça uma entrada de dado.

Exemplo 03 Problema Produtor X Consumidor Com buffer de tamanho 1. Variáveis compartilhadas. A solução do problema seria utilizar-se duas THREADS: 01 consumidor e 01 produtor. O que ocorre se não houver sincronização entre a leitura e escrita?

Exemplo 04 Problema do Produtor X Consumidor com sincronizacao do Buffer. Em Java, a sincronização entre threads é feita através do conceito de monitores. Monitor é um agrupamento de funções, cujas execuções não podem se dar de forma concorrente.

Exemplo 04 Utilizar os métodos multuamente excludentes de um objeto como do tipo synchronized em Java. Utilizar os métodos wait( ) e notify( ) para bloquear e liberar, respectivamente, as threads. Escreva uma classe em Java chamada Semaforo que implente as primitiva P(s) e V(s).

Exemplo 5 Utilização da Classe Semarofo para resolver o problema de Produtor-Consumidor: Utilizar dois objetos (instâncias) da classe Semaforo. s1 e s2 Valores iniciais: s1 = 1; s2 = 0;

A interface Runnable Para utilizar multithreads em Java é necessário instanciar um objeto de uma classe que estende a classe básicaThread, certo? Uma vez que Java não possui herança múltipla, como eu posso utilizar um objeto, cuja classe já é derivada, como no caso da ClasseThread? public class Filho extends Pai extends Thread { ………………. } // isto nao eh possivel em Java

A interface Runnable A solução encontrada em Java foi a utilização de uma interface: Runnable No caso, tem-se de implementar esta interface, que possui o método run( ). public class Filho extends Pai implements Runnable Ao implementar uma interface, a classe se capacita a ser tratada como se fosse um objeto do tipo da inteface implementada. Se a classe Filho implementar a interface Runnable, ela pode ser tratada como tal.

A interface Runnable Cria-se uma thread (Classe Thread), passando para o seu construtor uma referência do objeto que implementa a interface Runnable. Thread uma_Thread = new Thread(Runnable obj_thread) Thread uma_Thread = new Thread(Runnable obj_thread, String nome_da_thread)

Solução Baseada na Interface Runnable Thread Classe A referência Classe B Runnable

Solução Baseada em Herança da Classe Thread Classe B instanciação