3 - Acesso não Sincronizado ao Buffer

Os referidos códigos apresentados neste item, utilizados em conjunto com os do item anterior, demonstram o acesso de duas threads (produtor e consumidor) ao buffer de memória que, neste exemplo, não oferece qualquer controle de sincronização no seu acesso. Deste modo, o objetivo é demonstrar o problema da falta de integridade no acesso ao buffer.

Oportunamente serão demonstradas duas possíveis soluções para o referido problema.

3.1- Classe BufferNaoSincronizado.java


    package br.aiec.multithread.monitor;

import br.aiec.multithread.comum.IBuffer;


/**
 * Essa classe representa um esboço inicial de um monitor, e, portanto, 
 * 
 * ELA AINDA NÃO É SEGURA PARA MULTITHREAD! 
 * 
 * Essa classe não oferece qualquer mecanismo de sincronização para acesso concorrente/paralelo
 * ao buffer, o que consequentemente, irá gerar problemas de falta de integridade no buffer.
 * 
 * As próximas versões já serão seguras e serão baseadas nessa estrutura inicial.
 * 
 *  
 *
 */

public class BufferNaoSincronizado implements IBuffer {

    private int buffer;
    
    @Override
    public void gravar(int value) {
        System.out.println("GRAVANDO: " + value);
        this.buffer = value;
        
    }

    @Override
    public int ler() {
        int value = this.buffer;
        System.out.println("LENDO: " + value);
        return value;
    }
}


Copyright © 2016 AIEC.