Monitor - Produtor Consumidor

983 palavras 4 páginas
Problema Produtor Consumidor
Instituto Federal Goiano – Campus Morrinhos

Resumo
Uma ou mais thread de produtores criam um produto e colocam em um buffer. Uma ou mais thread de consumidores consomem o produto colocado no buffer. O produtor precisa esperar o buffer ficar livre para produzir o produto e o cliente precisa esperar o buffer ficar preenchido para consumir o produto.
Introdução
A tarefa do problema é sincronizar o acesso ao recurso, no caso a pilha, para que produtores saibam quando podem produzir e consumidores saibam quando podem consumir. Vamos então para a parte prática!
Primeiro vamos criar a classe do Consumidor:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public class Consumidor extends Thread { private int idConsumidor; private Buffer pilha; private int totalConsumir; public Consumidor(int id, Buffer p, int totalConsumir) { idConsumidor = id; pilha = p; this.totalConsumir = totalConsumir; } public void run() { for (int i = 0; i < totalConsumir; i++) { pilha.get(idConsumidor); } System.out.println("Consumidor #" + idConsumidor + " concluido!"); }
}
Essa classe é derivada da clase Thread, ou seja, cada cliente vai funcionar em um thread diferente. Os dados que utilizamos são um identificador (idConsumidor), uma referência para um Buffer e um contador (totalConsumir) que vai indicar quanto deve ser consumido pelo consumidor.
O método run() é chamado quando a thread for iniciada, ou seja, é nele que devemos definir o nosso cliente de fato. Definimos então o laço para executar as chamadas que consomem o recurso do buffer.
Vamos então definir a classe Produtor:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public class Produtor extends Thread { private int idProdutor; private Buffer pilha; private int producaoTotal; public Produtor(int id, Buffer p, int producaoTotal) {

Relacionados

  • I dont know
    3354 palavras | 14 páginas
  • trabalho sobre sistemas operacionais
    1499 palavras | 6 páginas
  • Sistema de informação
    2955 palavras | 12 páginas
  • Complexidade de Algoritmos
    3976 palavras | 16 páginas
  • Monitores
    975 palavras | 4 páginas
  • Exclusão múltipla
    4303 palavras | 18 páginas
  • Pesquisa sincronismo em processos
    806 palavras | 4 páginas
  • Testando o teste
    854 palavras | 4 páginas
  • Controle de Concorrência
    1291 palavras | 6 páginas
  • Computaçao
    2739 palavras | 11 páginas