Infra-Estrutura de Comunicação (IF678)

Slides:



Advertisements
Apresentações semelhantes
Programação em Java Prof. Maurício Braga
Advertisements

I/O Carlos Bazilio Depto de Ciência e Tecnologia
Programação Orientada a Objetos*
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Programação em Java Prof. Maurício Braga
Estruturas de Repetição
Sistemas distribuídos
Sockets Marco Antonio – marcoreis.net Arquiteto de Software Dezembro/2007.
Entrada e Saída Marco Antonio Arquiteto de Software Dezembro/2007.
Comunicação entre processos distribuídos
Tratamento de Exceções
Aula Teste INFNET terça-feira, 11 de janeiro de 2011
Orientação a Objetos: Encapsulamento e Classificação
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
Chapter 4: Threads.
Recursividade Inhaúma Neves Ferraz
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
Invocação de Métodos Remotos RMI
Programação Concorrente
Wagner Santos C. de Jesus
Wagner Santos C. de Jesus
9 Controle de fluxo Seqüenciadores. Jumps. Escapes. Exceções.
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
Sincronização e Comunicação entre Processos
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação JAVA
Estrutura de Dados em Java
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
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
Concorrência em Java Threads em Java.
Threads, Gerenciamento de Threads Pool de Threads, Grupo de Threads Variáveis Locais à Threads.
Concorrência em Java Threads em Java.
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 – CIn/UFPE Davi Duarte Denyson José Eduardo Souza Ivan França Rafael Lima.
Streams –input e output
Chamada Remota de Procedimentos
Desenvolvimento de Aplicações CORBA
Um Framework Para Testes
1 Mobilidade de Código com μcode Projeto Giga Alexandre Lages
Introdução à Programação Orientada a Objetos com Java Paulo Borba Centro de Informática Universidade Federal de Pernambuco Conceitos Básicos de Concorrência.
Orientação a Objetos e Java Graduação em Ciência da Computação
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Linguagem II Exceções.
Listas Simplesmente Encadeadas
Wagner Santos C. de Jesus
Infra-Estrutura de Comunicação (IF678) Aula Prática CIn/UFPE Rafael Lucena Roberta Mota Rubens Lopes Rodolfo Santos João Pedro Cordeiro.
Tratamento de Exceções
Programação com Threads
Introdução às Java Threads
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco Especificação de Sistemas Distribuídos.
Herança e Arquitetura em camadas
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP Hugo Simões Original por: Flávio.
RMI Objetos Distribuídos Luiz C. D´oleron SCJP
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Socket em Java.
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.
Programação com Threads Threads Java como um Estudo de Caso.
Java Threads.
Capítulo 8 Threads.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
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.
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
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:

Infra-Estrutura de Comunicação (IF678) Davi Duarte Cynthia Raphaella Ivan França Jéssica Barbalho Larissa Paz Paulo Fernando Aula Prática 03 – 2011.2 CIn/UFPE

Agenda: Programação Concorrente (Threads) Exercício Chat Exercício Selective Repeat

Programação Concorrente: O termo programação concorrente é usado no sentido abrangente, para designar a programação paralela e a programação distribuída

Objetivos da Programação Concorrente Reduzir o tempo total de processamento múltiplos processadores Aumentar confiabilidade e disponibilidade processadores distribuídos Obter especialização de serviços sistemas operacionais simuladores Implementar aplicações distribuídas correio eletrônico

Programação Concorrente Fluxo único de execução Vários fluxos de execução tarefa 1 tarefa 1 tarefa 2 tarefa 3 tarefa 2 tarefa 3 cada fluxo possui uma pilha de execução

Thread É uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente.

Estados de uma Thread Criação: Neste estado, o processo pai está criando a thread que é levada a fila de prontos; Execução: Neste estado a thread está usando a CPU; Pronto: Neste estado a thread avisa a CPU que pode entrar no estado de execução e entra na fila de prontos; Bloqueado: Neste estado, por algum motivo, a CPU bloqueia a thread, geralmente enquanto aguarda algum dispositivo de I/O; Término: Neste estado são desativados o contexto de hardware e a pilha é desalocada. Esperando e Finalizado.

Estados de uma Thread

Principais métodos em Java start(): inicia a execução da thread (método run) suspend(): suspende a execução da thread que está executando sleep(): faz a thread que está executando dormir por um tempo determinado yield(): faz a thread que está executando dormir por um tempo indeterminado resume(): resume a execução de uma thread suspensa stop(): termina a execução de uma thread; a thread não pode ser mais executada.

Principais métodos em Java 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.

Exemplo de threads Em java public class Conta {//... public double saldo = 0; void creditar(double vc) { saldo = saldo+vc; } void debitar(double vd) { if(saldo>vd){ saldo = saldo-vd;

Exemplo de threads Em java public class Credito extends Thread { private Conta conta; private double val; public Credito(Conta c,double v) { conta = c; val = v; } public void run() { conta.creditar(val);

Exemplo de threads Em java public class Debito extends Thread { private Conta conta; private double val; public Debito(Conta c, double v) { conta = c; val = v; } public void run() { conta.debitar(val);

Exemplo de threads Em java public class Teste { public static void main(String[] args) { Conta c = new Conta(); c.saldo=12; Thread a = new Credito(c, 23.0); Thread b = new Debito(c, 12.0); a.start(); b.start(); System.out.println(c.saldo); }

Exemplo de threads Em java public class Receiver implements Runnable{ DatagramSocket rcvSock; DatagramPacket rcvPacket; AtomicBoolean stopped; int rcvPort; public Receiver(AtomicBoolean stopped) throws SocketException{ rcvSock = new DatagramSocket(3400); this.stopped = stopped; } public void run(){ while(!stopped.get()){ byte [] receiveData = new byte [20]; rcvPacket = new DatagramPacket(receiveData, receiveData.length); try { rcvSock.receive(rcvPacket); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("Recebi : " + new String (rcvPacket.getData()));

public class Sender implements Runnable{ BlockingQueue <String> blockQueue; AtomicBoolean stopped; DatagramSocket sendSock; DatagramPacket sendPkt; String ipAmigo; String msg; byte [] buffer; Sender(AtomicBoolean stopped, BlockingQueue<String> blockQueue){ this.stopped = stopped; this.blockQueue = blockQueue; ipAmigo = "localhost"; } public void run (){ try { sendSock = new DatagramSocket(); } catch (Exception e) { (continua)

while(!stopped.get()){ try { msg = blockQueue.take(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } sendPkt = new DatagramPacket(msg.getBytes(), msg.getBytes().length, InetAddress.getByName(ipAmigo), 3400); sendSock.send(sendPkt); } catch (Exception e2) {}

Exemplo de threads Em java public static void main(String[] args) throws Exception { AtomicBoolean stopped = new AtomicBoolean (false); BlockingQueue<String> blockQueue = new ArrayBlockingQueue<String>(5000); Sender sender = new Sender (stopped, blockQueue); Receiver rcver = new Receiver (stopped); blockQueue.add("Testando"); blockQueue.add("Essa"); blockQueue.add("Mer..."); new Thread(sender).start(); new Thread(rcver).start(); //stopped.set(true); }

Chat Multiusuário A descrição do projeto se encontra em: http://cin.ufpe.br/~ilfn/Monitoria_Comunicacao/Aulas_Praticas/AulaPratica%203/especifica%e7%e3o_miniprojeto3.pdf As telas estão disponíveis em: http://cin.ufpe.br/~ilfn/Monitoria_Comunicacao/Aulas_Praticas/Interface_Java.zip

Selective Repeat Implementar uma estrutura Cliente-Servidor: Baseada no Selective Repeat Onde é possível realizar transferências de um arquivo qualquer (texto/binário) A implementação do protocolo deverá ser feita na camada de aplicação, utilizando o protocolo UDP

Projetos Tanto o Chat quanto o Selective Repeat devem ser feitos em grupos de 3 pessoas. Os grupos precisam ser definidos e postados na comunidade do Orkut até o dia 19/10. A entrega deve ser feita até o dia 4/11, o monitor responsável será indicado na comunidade do Orkut, após a definição das equipes.

Referências http://www.coinfo.cefetpb.edu.br/professor/petronio/POO/Material/threads.ppt