Ich habe den folgenden Code:RMI: auf Server-Seite Thread wartet
public interface RmiServer extends Remote{
public String getMessage()throws RemoteException;
}
public class DefaultRmiServer implements RmiServer{
private LinkedBlockingQueue<String> queue;
@Override
public String getMessage()throws RemoteException{
return queue.take();
}
...
}
Wenn rmi Client ruft getMessage()
Methode klar ist, dass es zwei Situationen sein können:
- gibt es eine Nachricht in Warteschlange und Methode liefert
- es
no
Nachricht in der Warteschlange und Faden wird
Was passiert im zweiten Fall mit diesem Rmi-Aufruf? Wie lange wird der Client warten?
standardmäßig sehen steuern können. – GhostCat
Wenn Sie dies zu einer robusteren API machen wollen, würde ich vorschlagen, eine Methode zu implementieren, die eine "lange Wartezeit" benötigt, die es dem Client erlaubt, zu kontrollieren, wie lange er wartet (anstatt sich auf das rmi-Timeout zu verlassen). globaler "Wert für den jvm). – jtahlborn