Thain�, se seu programa for multiprocessado, ou seja, enquanto uma thread
est� inserindo mensagens em uma esta��o outra esta tentando ler, uma solu��o
um pouco melhor poder� ser Bloquear at� certo recurso estar dispon�vel. A�
vai um exemplo:

public class Station {
    private Vector storage;
    private String name;
    private int maxStorage;

    public Station (String name, int maxStorage) {
        super ();
        this.name = name;
        this.maxStorage = maxStorage;
        storage = new Vector (maxStorage);
    }

    public String getName () {
        return name;
    }

    public synchronized void storeMessage (String msg) {
        while  (storage.size () >= maxStorage) {
            try {
                wait ();
            }
            catch (InterruptedException e) {
                // do nothing, you are inside a while!
            }
        }
        storage.addElement (msg);
        notifyAll ();
    }

    public synchronized String retrieveMessage () {
        while (storage.size () == 0) {
            try {
                wait ();
            }
            catch (InterruptedException e) {
                // Let it pass here to
            }
        }
        String s = (String) storage.elementAt (0);
        storage.removeElementAt (0);
        notifyAll ();
        return s;
    }
}

Se voc� implementar desta forma voc� n�o precisar� usar excess�es e o
controle de acesso ficar� simplificado. Se um objeto em um thread tentar ler
uma mensagem, mas n�o houver nenhuma dispon�vel, est� thread esperar� at�
que alguma outra thread adicione uma mensagem para que ela possa ler. Da
mesma forma, se um objeto em determinada thread tentar inserir uma mensagem,
mas n�o houver disponibilidade, entao esta thread esperar� at� que outra
thread leia mensagens e libere portanto recursos para ele gravar a mensagem.

Se este for o seu caso, voc� pode tentar esta abordagem

Espero ter ajudado!

Um abra�o,

Ricardo Munho Santiago

* Para nao receber mais e-mails da lista, acesse 
<http://www.sun.com.br:8080/guest/RemoteAvailableLists>, coloque seu e-mail, escolha a 
lista <[EMAIL PROTECTED]> e de um <submit>.

Responder a