As primitivas de sincronização serão demonstradas por meio de um exemplo clássico chamado de produtor-consumidor.
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();
}