Mini-prova

Paulo Borba

Centro de Informática

Universidade Federal de Pernambuco

 

Recife, 14 de julho de 2003

 


  1. Altere a classe abaixo para que ela seja segura em um ambiente concorrente. Em particular, garanta que o método colocar só coloca um elemento no buffer caso ele esteja vazio (elemento for null); se o buffer não estiver vazio, o método colocar deve ficar esperando até que o elemento do buffer seja retirado. Similarmente, garanta também que o método pegar só retorna um elemento caso o buffer não esteja vazio; se o buffer estiver vazio, o método pegar deve ficar esperando até que seja inserido um elemento no buffer.

    class Buffer {
      private Object elemento;
      Buffer() {
        elemento = null;
      }
      void colocar(Object objeto) {
        elemento = objeto;
      }

      Object pegar() {

        Object tmp = elemento;

        elemento = null;

        return tmp;

      }

    }