2 - Exemplo: o problema do Produtor-Consumidor

As primitivas de sincronização serão demonstradas por meio de um exemplo clássico chamado de produtor-consumidor.

O problema consiste, por exemplo, em duas threads, uma produtora e uma consumidora, que acessam um buffer comum (variável de memória compartilhada) de tamanho fixo. O produtor grava um número inteiro no buffer enquanto que o consumidor lê o referido número. Deste modo, todo número gravado no buffer deve ser lido apenas uma única vez.

O código abaixo é de uso comum tanto para este módulo como para a próxima etapa do nosso estudo. Aqui será demonstrado o problema, enquanto que no módulo seguinte, serão apresentadas duas possíveis soluções.

2.1- Interface IBuffer.java


    package br.aiec.multithread.comum;

/**
 * Essa interface define as duas operações utilizadas para acesso ao monitor: 
 * 
 *  gravar que é utilizada pelo produtor;
 *  
 *  ler que é utilizada pelo consumidor.
 *  
 *   
 *
 */
public interface IBuffer {

    public void gravar(int value);
    
    public int ler();
}


Copyright © 2016 AIEC.