2.2 - Classe PrincipalBufferSincronizado.java
package br.aiec.multithread.teste;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import br.aiec.multithread.comum.Consumidor;
import br.aiec.multithread.comum.IBuffer;
import br.aiec.multithread.comum.Produtor;
import br.aiec.multithread.monitor.BufferSincronizado;
/**
*
* Essa classe serve para testar o BufferSincronizado demonstrando que o buffer sempre
* será mantido integro não importando a forma como as threads o acessam.
*
*
*
*/
public class PrincipalBufferSincronizado {
public static void main(String[] args) {
IBuffer buffer = new BufferSincronizado();
Runnable produtor = new Produtor(buffer);
Runnable consumidor = new Consumidor(buffer);
ExecutorService pool = Executors.newCachedThreadPool();
pool.execute(produtor);
pool.execute(consumidor);
pool.shutdown();
}
}
Observe que, em relação ao exemplo do módulo anterior, agora os valores gravados e lidos sempre terão o mesmo valor, ou seja, para o exemplo presente no código, o resultado da somatória dos valores gravados e lidos sempre será 55, em quaisquer circunstâncias que se apresentem. Portanto, o exemplo apresentado resolve o problema da falta de integridade do buffer.