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>.