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

ATPS programacao concorrente

Por:   •  8/6/2015  •  Trabalho acadêmico  •  1.924 Palavras (8 Páginas)  •  453 Visualizações

Página 1 de 8

Sumário

INTRODUÇÃO        3

1.        Etapa 1        4

2.        Etapa 2        7

CONCLUSÃO        11


INTRODUÇÃO

Esta atividade é importante para que você aprimore seus conhecimentos sobre como implementar a programação concorrente, os principais problemas e para que se entenda e saiba como resolve-los ao se trabalhar com recursos compartilhados.


  1. Etapa 1

Etapa1.java

package etapa1;

public class Etapa1 {

    public static void main(String[] args) {

        Buffer buffer = new Buffer();

        Consumidor[] consumidor = new Consumidor[50];

       

        for(int i=0;i

        {

            consumidor[i] = new Consumidor(i);

            consumidor[i].buffer = buffer;

            consumidor[i].start();

        }

    }

}

Consumidor.java

package etapa1;

public class Consumidor extends Thread {

   

    Buffer buffer;

    //private int ConsumidorId;

    public Consumidor(int numero) {

        super("Consumidor "+numero);

    }  

   

    @Override

    public void run(){

       

        while(buffer.getValor()>0){

           // ConsumidorId = buffer.getValor();

            System.out.println(Thread.currentThread().getName() +

                                " Valor utilizado " + buffer.getValor());

       

            buffer.decrementaValor();

            try {

                Thread.sleep(10000);

            } catch (InterruptedException ex) {

                System.err.println("Erro : "+ex);

            }

        }

    }

   

}

Buffer.java

package etapa1;

public class Buffer {

   

    private int valor;

    public Buffer() {

        this.valor = 500;

    }

    public int getValor() {

        return valor;

    }

    public void setValor(int novoValor) {

        this.valor = novoValor;

    }

   

    public void incrementaValor(){

        this.valor++;

    }    

   

    public void decrementaValor(){

        this.valor--;

    }

   

}

Tabela do experimento(utilizado 3000ms de delay)

Thread

1ª execução

2ª execução

3ª execução

4ª execução

5ª execução

6ª execução

7ª execução

8ª execução

9ª execução

10ª execução

1

4s

3s

3s

3s

3s

3s

3s

3s

3s

3s

10

3s

3s

3s

3s

3s

3s

3s

3s

3s

3s

50

3s

3s

3s

3s

3s

3s

3s

3s

3s

3s

100

6s

6s

6s

6s

6s

6s

6s

6s

6s

6s

500

30s

30s

30s

30s

30s

30s

30s

30s

30s

30s

1000

60s

60s

60s

60s

60s

60s

60s

60s

60s

60s

Tabela de comparativo

Thread

Tempo médio

1

3,1s

10

3s

50

3s

100

6s

500

30s

1000

60s

[pic 1]


  1. Etapa 2

Etapa2.java

package etapa2;

public class Etapa2 {

    public static void main(String[] args) {

        //IBuffer localCompartilhado = new UnsynchronizedBuffer();

        SynchronizedBuffer localCompartilhado = new SynchronizedBuffer();

       

        StringBuffer cabecalho = new StringBuffer("Operação");

        cabecalho.setLength(40);

        cabecalho.append("Buffer\t\tContagem de ocupados");

        System.out.println(cabecalho);

        localCompartilhado.displayState("Estado Inicial");

       

        Produtor p = new Produtor(localCompartilhado);

        Consumidor c = new Consumidor(localCompartilhado);

       

        p.start();

        c.start();

       

    }

}

...

Baixar como (para membros premium)  txt (7.9 Kb)   pdf (126.3 Kb)   docx (36.8 Kb)  
Continuar por mais 7 páginas »
Disponível apenas no TrabalhosGratuitos.com