Pedi ajuda em outros fóruns sobre isso, mas ainda não obtive retorno, e como estou meio que precisando de uma resposta com urgência, estou tentando atirar em vários lugares 
Minha dúvida é a seguinte: um servidor implementa um método com retorno void (sem retorno), e dentro deste método tem somente um while(true). O cliente, por sua vez, faz a chamada remota a este método, e em seguida mostra uma mensagem local. O cliente bloqueia e nunca mostra a mensagem ou não bloqueia devido ao fato de o método não ter retorno (void)?
Eu implementei e ele bloqueou, nunca mostrou a mensagem, porém em alguns fóruns gringos, disseram que o cliente não deveria bloquear em um método void, e aí eu fiquei confuso, será que fiz algo errado? Seguem os códigos:
Interface do métodos do servidor
public interface IClasseServer extends Remote {
public void infinito() throws RemoteException;
}
Implementação dos métodos
public class ClasseServer extends UnicastRemoteObject implements IClasseServer {
public ClasseServer() throws RemoteException {
}
@Override
public void infinito() throws RemoteException {
while(true){
}
}
}
Servidor
public class Server {
public Server() {
try {
LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
ClasseServer c = new ClasseServer();
Naming.bind("rmi://localhost/IClasseServer", c);
} catch (Exception e) {
}
}
public static void main(String args[]) {
new Server();
}
}
Cliente
public static void main(String args[]) {
try {
IClasseServer c = (IClasseServer) Naming.lookup("rmi://localhost/IClasseServer");
c.infinito();
System.out.println("Não bloqueio??");
} catch (Exception e) {
System.out.println("Error: " + e);
}
}
}