TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

ATPS Programação Concorrente

Por:   •  19/9/2015  •  Trabalho acadêmico  •  5.023 Palavras (21 Páginas)  •  415 Visualizações

Página 1 de 21

CENTRO UNIVERSITÁRIO ANHANGUERA DE CAMPO GRANDE[pic 2]

CIÊNCIA DA COMPUTAÇÃO

PROGRAMAÇÃO CONCORRENTE

CAMPO GRANDE MS/JUNHO DE 2015

GOMES SANTOS                                RA:373[pic 3][pic 4]

DA SILVA                                                         RA:379[pic 5]

PROGRAMAÇÃO CONCORRENTE

ATPS APRESENTADA COMO REQUISITO PARCIAL DE AVALIAÇÃO DA DISCIPLINA PROGRAMÃÇÃO CONCORRENTE MINISTRADA PELO PROF.º GIULLIANO ROSA.

CAMPO GRANDE MS/JUNHO DE 2015

SUMÁRIO[pic 6][pic 7]

1.   CÓDIGO FONTE ETAPA 2                04

  1. CÓDIGO FONTE ETAPA 3                07
  2. CONSIDERAÇÕES FINAIS                11

  1. CÓDIGO FONTE ETAPA 2

Classe principal para execução do programa:

public class PonteTest {

        public static void main(String[] args) {

                

                Ponte ponte = new PonteSincronizada();

                

                new Thread(new Produtor(ponte)).start();

                new Thread(new Consumidor(ponte)).start();

                

        }

}

Classe que será implementada com as informações que serão compartilhadas entre as threads produtoras e consumidoras:

public interface Ponte {

        public void set(int valor) throws InterruptedException;

        

        public int get() throws InterruptedException;

}

Classe do objeto compartilhado pelas threads consumidoras e produtoras:

public class PonteSincronizada implements Ponte {

        private int valor = -1;

        private boolean ocupada = false;//Indica se a ponte está ocupada ou não para a execução da próxima thread

        @Override

        public synchronized void set(int valor) throws InterruptedException {

                

                while(ocupada)

                {

                        wait();//Faz a thread aguardar a execução

                }

                System.out.print("Produtor Produziu: "+ valor + "\n");

                this.valor = valor;

                

                ocupada = true;

                notifyAll(); //indica a todas as threads que estão aguardando a liberação ou a modificação do status da ponte para executar sua função

        }

        @Override

        public synchronized int get() throws InterruptedException {

                

                while(!ocupada)

                {

                        wait();

                }

                System.err.println("Consumidor Consumiu: "+ valor + "\n");

                

                ocupada = false;

                notifyAll();

                

                return valor;

        }

}

Classe produtora:

public class Produtor implements Runnable {

        private Ponte ponte;

        int tempoTotalP = 0;

        

        public Produtor(Ponte ponte)

        {

                this.ponte = ponte;

        }

        

        @Override

        public void run() {

        

                int total = 0;

...

Baixar como (para membros premium)  txt (14.5 Kb)   pdf (166.6 Kb)   docx (32.2 Kb)  
Continuar por mais 20 páginas »
Disponível apenas no TrabalhosGratuitos.com