Programação Concorrente com Thread Java. Luiz Affonso Guedes Sistemas Distribuidos
|
|
|
- Carolina Martins Figueiredo
- 9 Há anos
- Visualizações:
Transcrição
1 Programação Concorrente com Thread Java Luiz Affonso Guedes Sistemas Distribuidos
2 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
3 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,
4 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.
5 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.
6 Estados de uma Thread em Java rmino do tempo de dormida notify( ) notifyall( ) nascimento start( ) Fim da E/S pronta run( ) Alocar um processador executando wait( ) sleep( ) Fim do Método run( ) E/S esperando dormindo morta bloqueada
7 Prioridade de Thread Em Java, a prioridade é determinada com um inteiro entre 1 e 10. A prioridade padrão é o valor é a maior prioridade e 1 é a menor. A THREAD herda a prioridade da THREAD que acriou. void setpriority(int prioridade); int getpriority( );
8 Algoritmo de Escalonamento Prioridade 10 A B Prioridade 9 C Prioridade 8... Prioridade 3 D E F Prioridade 2 Prioridade 1 G
9 Exemplo 01 O programa cria 04 threads e as coloca para dormir. ThreadBasica é uma extensão da classe Thread.
10 Exemplo 1 Thread01.java public class Thread01 { // criacao e start das threads public static void main( String args[] ) { System.out.println("Main: Inicio da Thread main()\n"); // Declaracao de quatro objetos do tipo ThreadBasica ThreadBasica thread1, thread2, thread3, thread4; // criacao de quatro objetos do tipo ThreadBasica thread1 = new ThreadBasica( "thread1" ); thread2 = new ThreadBasica( "thread2" ); thread3 = new ThreadBasica( "thread3" ); thread4 = new ThreadBasica( "thread4" ); System.err.println( "\nmain: Disparando as threads" ); thread1.getreferenciathread(thread2); // start de execucao das quadro Threads thread1.start(); thread2.start(); thread3.start(); thread4.start(); System.err.println( "Main:Threads Basicas iniciadas\n" ); try{ } thread1.join(); thread2.join(); thread3.join(); thread4.join(); catch(interruptedexception x) { } System.out.println("Main: Agora faça o modelo em Rede de Petri desse programa\n"); System.out.println("Main: Fim da Thread main()\n"); } // --- fim do metodo main() } // fim da classe Thread01
11 ThreadBasica.java // Classe ThreadBsica estende a classe Thread // Cada objeto desta classe ira dormir aleatoriamente entre 0 e 5 segundos. class ThreadBasica extends Thread { private int tempo_de_sono; private ThreadBasica namorada = null; // construtor recebe o nome da thread // ele chama o construtor da classe pai (super) public ThreadBasica( String nome ) { super( nome ); // construtor da classe pai // determina o tempo do sono aleatoriamente entre 0 e 5s tempo_de_sono = (int) ( Math.random() * 5000 ); //metodo estatico da classe Math // escreve o nome da thread e seu tempo de sono } System.err.println( "Nome: " + getname() + "; tempo do sono: " + tempo_de_sono ); void getreferenciathread(thread t1) { } namorada = (ThreadBasica) t1; // metodo que ira fazer a execucao da thread public void run() { // escreve que a thread ira dormir try { } System.err.println( getname() + " vai comecar a dormir" ); //Thread.sleep( tempo_de_sono ); sleep(tempo_de_sono); //this.sleep(tempo_de_sono); // tratamento de erro caso haja algum erro durante o processo de sono da thread }/ catch ( InterruptedException interruptedexception ) { } System.err.println( interruptedexception.tostring() ); if(namorada!= null) { try{ namorada.join(); } catch(interruptedexception x) { } } // escreve o nome da thread apos o termino de seu sono System.err.println( getname() + " acordou e agora vai morrer" ); } // fim da classe ThreadBasica
12 Exercício 01 Analise como se chama o método sleep(). Crien 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) { }
13 Escalonamento de Threads Prioridade 10 A B Prioridade 9 C Prioridade 8... Prioridade 3 D E F Prioridade 2 Prioridade 1 G
14 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.
15 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?
16 UML do Exemplo 03 Thread Principal Produtor escrever Buffer ler Consumidor
17 Exemplo 04 Problema do Produtor X Consumidor com sincronização 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.
18 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).
19 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;
20 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
21 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.
22 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)
23 Solução Baseada na Interface Runnable Classe A Thread referência Classe B Runnable
24 Solução Baseada em Herança da Classe Thread Thread Classe B instanciação
25 Exemplo 6 Classe para exemplificar a utilização da interface Runnable para implementação de Threads.
Concorrência em Java. Threads em Java
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 hospedeiro. A JVM não possui o conceito de processos
Threads. O que é uma Thread? Paralelismo
Threads em Java 1 O que é uma Thread? Paralelismo Threads Multi- threading é o mecanismo de concorrência suportado explicitamente pela linguagem Java. Os mecanismos de gerenciamento e sincronização de
Threads em Java. Sistemas Operacionais - Laboratório Professor Machado
Threads em Java Sistemas Operacionais - Laboratório Professor Machado 1 Conceitos de Programação Concorrente Uma unidade concorrente é um componente de um programa que não exige a execução seqüencial,
PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 11 - Threads e Concorrência
Aula 11 - Threads e Concorrência Conteúdo Programático desta aula Apresentar os Conceitos de Threads, Concorrência e Sincronização. Verificar a aplicabilidade destes conceitos no mercado, bem como sua
THREADS EM JAVA. George Gomes Cabral
THREADS EM JAVA George Gomes Cabral THREADS Fluxo seqüencial de controle dentro de um processo. Suporte a múltiplas linhas de execução permite que múltiplos processamentos ocorram em "paralelo" (em computadores
Threads e Concorrência em Java (Material de Apoio)
Introdução Threads e Concorrência em Java (Material de Apoio) Professor Lau Cheuk Lung http//www.inf.ufsc.br/~lau.lung INE-CTC-UFSC A maioria dos programas são escritos de modo seqüencial com um ponto
Múltiplas Linhas de Execução Java (Threads)
Múltiplas Linhas de Execução Java (Threads) SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic [email protected] Instituto de Ciências Matemáticas
Java Threads. Introdução
Java Threads [email protected] 1 Introdução O único mecanismo de concorrência suportado explicitamente pela linguagem Java é multi-threading. threading. Os mecanismos de gerenciamento e sicronização
Sistemas Operacionais I Parte VI Threads
Sistemas Operacionais I Parte VI Threads Roteiro Introdução Benefícios Ciclo de Vida Estados Modelos Multithreading Modelo Muitos para Um Modelo Um para Um Modelo Muitos para Muitos Sistemas com Threads
Programação concorrente em Java
Programação concorrente em Java Paulo Sérgio Almeida Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho 2007/2008 c 2000 2007 Paulo Sérgio Almeida Programação concorrente
Programação Orientada a Objetos em Java. Threads Threads Threads. Threads
Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java Threads Threads Threads Threads Professor: César Melo Slides baseados
Gabriel de Oliveira Ramos Roland Teodorowitsch - Orientador
THREADS EM JAVA Gabriel de Oliveira Ramos Roland Teodorowitsch - Orientador Universidade Luterana do Brasil (Ulbra) Curso de Ciência da Computação Campus
Programação Paralela. Processos. Processos. Processos. Processos. Unidade 2
Unidade 2 Programação Paralela Definição Um programa em execução em uma máquina Identificado pelo seu PID ( (Process Identifier) Execução dos Um processador pode executar somente um processo a cada instante
Num programa em JAVA é possível definir diferentes sequências de execução independente: Threads.
Threads Folha 5-1 Num programa em JAVA é possível definir diferentes sequências de execução independente: Threads. Uma Thread é similar a um processo no sentido em que corresponde a um conjunto de instruções
Só podem ser executados por uma Thread que detenha o lock do objecto
Transferência de controle entre Threads Os métodos wait(), notify() notifyall(), da classe Object, Permitem a transferência de controlo de uma Thread para outra. Só podem ser executados por uma Thread
Prof. Silvana Rossetto 9 de julho de DCC/IM/UFRJ
Computação Concorrente (MAB117) Gabarito Segunda Prova Prof. Silvana Rossetto 9 de julho de 2015 1 DCC/IM/UFRJ Questão 1 (2,5 pts) O código Java abaixo implementa uma solução para o problema do barbeiro
Multithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações
Programação Orientada por Objectos com Java www.fe.up.pt/~aaguiar [email protected] 1 Multithreading 154 Objectivos Ser capaz de: Explicar os conceitos básicos de multithreading Criar threads múltiplos
(Aula 17) Threads em Java
(Aula 17) Threads em Java Difícil As Threads thread threads de emjava classificar sãogerenciadaspelajvm. podemser com user criadasdas thread ou kernel Profa. Patrícia A seguintesmaneiras: Fazendo extend
MULTITHREADING. Prof.: Michele Nasu Tomiyama Bucci
MULTITHREADING Prof.: Michele Nasu Tomiyama Bucci Introdução O corpo humano realiza uma grande variedade de operações paralelamente, ou concorrentemente. Os computadores também realiza operações concorrentemente.
AULA Nº 08 SISTEMAS OPERACIONAIS. Threads
AULA Nº 08 SISTEMAS OPERACIONAIS Threads Contextualizando Na aula passada Sincronização de Processos Aula de hoje Threads O Modelo de Processo 1) Utilizado para agrupar recursos 2) Um espaço de endereço
Fundamentos de Programaçã. ção Concorrente
Java 2 Standard Edition Fundamentos de Programaçã ção Concorrente Helder da Rocha www.argonavis.com.br 1 Programação concorrente O objetivo deste módulo é oferecer uma introdução a Threads que permita
Programação Concorrente
+ XV Jornada de Cursos CITi Aula 2 Programação Concorrente Benito Fernandes Fernando Castor João Paulo Oliveira Weslley Torres + Agenda Conceitos básicos de Threads em Java Benefícios de Thread Estados,Métodos,
Universidade Federal da Paraíba
Universidade Federal da Paraíba Mestrado em Informática Fora de Sede Universidade Tiradentes Aracaju - Sergipe Disciplina Sistemas Operacionais Professor Jacques Philippe Sauvé Aluno José Maria Rodrigues
Fundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 6: Monitores, Troca de Mensagens e Deadlock Diego Passos Última Aulas Mecanismos de Exclusão Mútua Operações atômicas. Protocolos de controle de acesso. Spin-locks.
Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }
Recapitulando Orientação a objetos: programas organizados em torno da definição de classes, instanciação de objetos e troca de mensagens. Declaração de variáveis de referencia: Circle c; Criação/instanciação
PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 12 - Threads e Concorrência em Java
Aula 12 - Threads e Concorrência em Java Conteúdo Programático desta aula Aplicar os conceitos e threads, processos concorrentes e sincronização em pequenos programas. Aplicar e verificar os conceitos
Programação concorrente usando threads POSIX e Java
Programação concorrente usando threads POSIX e Java MAC 431 / MAC 5742 Introdução à Computação Paralela e Distribuída Daniel Cordeiro DCC - IME - USP 13 de agosto de 2012 Introdução Por que escrever programas
Linguagem de programação Java
Instituto Federal de Minas Gerais Campus Ponte Nova Linguagem de programação Java Professor: Saulo Henrique Cabral Silva ENTENDENDO O JAVA 2 Entendendo o Java executando... A instância da JVM irá iniciar
Segundo trabalho prático de implementação Sistema de reserva de assentos
Segundo trabalho prático de implementação Sistema de reserva de assentos 1. Descrição do problema Computação Concorrente (MAB-117) 2016/2 Prof. Silvana Rossetto 1 DCC/IM/UFRJ 17 de novembro de 2016 Um
Capítulo 2 Processos e Threads
Capítulo 2 Processos e Threads 2.1 Processos 2.2 Threads 2.3 Comunicação interprocesso 2.4 Problemas clássicos de IPC 2.5 Escalonamento 1 Processos O Modelo de Processo Multiprogramação de quatro programas
Utilização de threads em Java
Universidade Federal do Rio de Janeiro IM/DCC Utilização de threads em Java Prof. Austeclynio Pereira e-mail: [email protected] Ciclo de vida de uma thread nascimento start notify notifyall
BroadcastReceiver. O que são mensagens broadcasts? Use notificações! (Serão explicadas em breve)
Broadcast Receiver BroadcastReceiver Chamado pelo Android para reagir a mensagens broadcast Usado para executar tarefas rápidas em segundo plano Não interromper o usuário por meio de activities Use notificações!
Programação Concorrente em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM
Programação Concorrente em Java Profa Andréa Schwertner Charão DLSC/CT/UFSM O que é programação concorrente? Um programa, múltiplos fluxos de execução Quando usar programação concorrente? Desempenho Ex.:
Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos
Programação Orientada a Objetos Vagner Luz do Carmo - Vluzrmos Questão 1 Dada a seguinte classe na linguagem JAVA: public class Carro { public String retornacor(){ ; return Azul ; private String retornachassi(){
JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: insira as propriedades escolhidas aqui FACULDADE DE TECNOLOGIA SENAC PELOTAS
JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: insira as propriedades escolhidas aqui FACULDADE DE TECNOLOGIA SENAC PELOTAS Nome do aluno: Fabiano Nobre Mendes Identificação da Turma: ADS(Noturno) Data:
Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }
Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos
Java : Comunicação Cliente-Servidor.
Java : Comunicação Cliente-Servidor. Objetivo: Capacitar o aluno a desenvolver uma aplicação servidora para múltiplos clientes. Apresentar as classes Socket e ServerSocket, classes de fluxo de dados, a
Programação Orientada a Objectos - P. Prata, P. Fazendeiro
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Aula 6: Comunicação entre processos. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela
Aula 6: Comunicação entre processos Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela (-- motivação --) Processos em execução no sistema operacional podem ser: Independentes:
Programação concorrente (processos e threads)
Programação concorrente (processos e threads) Programação concorrente Por que precisamos dela? Para utilizar o processador completamente Paralelismo entre CPU e dispositivos de I/O Para modelar o paralelismo
Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais
DCA-108 Sistemas Operacionais Capítulo 2 Luiz Affonso Guedes www.dca.ufrn.br/~affonso [email protected] Multiprogramação Luiz Affonso Guedes 1 Luiz Affonso Guedes 2 Conteúdo Caracterização de um SO Moderno
Linguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa
Conceitos de Programação Orientada a Objetos
Conceitos de Programação Orientada a Objetos Tatyana Bitencourt Com as técnicas de orientação a objeto, é possível obter resultados considerados impossíveis pensando de maneira estruturada. Como Java não
Sistemas Operacionais Aula 7
Sistemas Operacionais Aula 7 Anderson L. S. Moreira [email protected] http://dase.ifpe.edu.br/~alsm Curso de Análise e Desenvolvimento de Sistemas de Informação Recife - PE O que fazer
Universidade da Beira Interior. Sistemas Distribuídos. Folha 4-1. Threads Daemon Threads
Threads Daemon Threads Folha 4-1 Uma Thread Daemon é uma Thread, geralmente usada para executar serviços em background, que tem a particularidade de terminar automaticamente após todas as Threads não Daemon
Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli
Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; Tudo no mundo real pode ser representado por meio do conceito de "objeto": uma planta, uma mesa, uma pessoa, um sentimento,
Classes e Objetos. Sintaxe de classe em Java
Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados
Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação
Java Remote Method Invocation Java Remote Method Invocation () é um protocolo Java para comunicação entre processos Permite objetos Java invocar transparentemente métodos de outros objetos (que podem estar
Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs
Programação Orientada a Objetos Professor: André Luis Meneses Silva [email protected] br.geocities.com/programacao2ufs [ Conteúdo ] Objeto Mensagens Classe Encapsulamento Visibilidade Membros de Instância
Sincronização de Threads
Sincronização de Threads Sistema justo quando cada threadobtém ace so suficiente a recursoslimitadosa fim de progredir razoavelmente Starvation ocorre quando uma ou maisthreadsestão impedidasde obter ace
LabSO Gerência de Processos. Processos. Porque eu preciso entender este assunto?
LabSO Gerência de AULA 3 Flávia Maristela ([email protected]) Romildo Martins ([email protected]) Porque eu preciso entender este assunto? Para entender como um computador consegue executar
Analisar os sistemas operacionais apresentados na figura e responder as questões abaixo: Identificar
Projeto Integrador Sistemas Operacionais Prof.ª Lucilia Ribeiro GTI 3 Noturno Grupo: Anderson Alves da Mota. André Luiz Silva. Misael bezerra dos santos. Sandro de almeida silva. Analisar os sistemas operacionais
Programação Concorrente em java - Exercícios Práticos Abril 2004
Programação Concorrente em java - Exercícios Práticos Abril 2004 1. Introdução As threads correspondem a linhas de controlo independentes no âmbito de um mesmo processo. No caso da linguagem JAVA, é precisamente
Sistemas Operacionais
Sistemas Operacionais Processos Semáforos Semáforos Mecanismo de sincronização que não requer espera ocupada Dijkstra propôs usar uma variável inteira para contar o n o de WAKEUPs para uso futuro Menos
Linguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Criando objeto Definindo valores para os atributos do objeto Método construtor Definindo valores padrão para os atributos dos
Exclusão Mútua (mutex)
2004-2017 Volnys Bernal 1 Exclusão Mútua (mutex) Volnys Borges Bernal [email protected] Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2017 Volnys Bernal 2 Tópicos Exclusão Mútua (Mutex)
