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

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

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

Apresentações semelhantes


Apresentação em tema: "Infra-Estrutura de Comunicação (IF678) Aula Prática 03 – 2011.2 CIn/UFPE Davi Duarte Cynthia Raphaella Ivan França Jéssica Barbalho Larissa Paz Paulo Fernando."— Transcrição da apresentação:

1 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

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

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

4 4 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

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

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

7 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.

8 Estados de uma Thread

9 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.

10 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.

11 E XEMPLO DE THREADS E M 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; }

12 E XEMPLO DE THREADS E M 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); }

13 E XEMPLO DE THREADS E M 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); }

14 E XEMPLO DE THREADS E M 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); }

15 E XEMPLO DE THREADS E M 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())); } 15

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

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

18 E XEMPLO DE THREADS E M JAVA public static void main(String[] args) throws Exception { AtomicBoolean stopped = new AtomicBoolean (false); BlockingQueue blockQueue = new ArrayBlockingQueue (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); } 18

19 C HAT M ULTIUSUÁRIO A descrição do projeto se encontra em: cas/AulaPratica%203/especifica%e7%e3o_miniprojeto3.pdf As telas estão disponíveis em: cas/Interface_Java.zip 19

20 S ELECTIVE R EPEAT 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 20

21 P ROJETOS 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. 21

22 R EFERÊNCIAS /Material/threads.ppt 22


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

Apresentações semelhantes


Anúncios Google