我有一个GUI,它使用RMI来获取必须可视化的数据。我正在使用AnimationTimer进行服务器查询,因此在最坏的情况下,它可能是60次/秒。当服务器运行时,一切都很完美。 但是,如果我在没有服务器启动的情况下运行客户端,整个GUI变得非常慢。似乎创建连接的尝试是阻止其他一切的问题。但我不知道如何解决它。
我不理解的另一个问题是:当我通过“x”关闭服务器应用程序的菜单栏时,仍然有一些正在运行的东西。我必须第二次取消该程序(在Netbeans工具栏中)以完全关闭它。
以下是在客户端运行的代码。 getAllSignals() - 方法由AnimationTimer调用:
public static RMI rmiConnect() {
try{
Registry reg = LocateRegistry.getRegistry("127.0.0.1", 1099);
RMI rmi = (RMI) reg.lookup("server");
return rmi;
} catch(RemoteException | NotBoundException e){
System.out.println(e);
return null;
}
}
public static Map<String, double> getAllSignals() throws RemoteException, IOException {
try {
RMI rmi = rmiConnect();
Map<String, double> signals = rmi.getAllSignals();
return (Map<String, double>) signals;
} catch (Exception ex) {
ExceptionsHandling exception = new ExceptionsHandling();
Map<String, double> list = exception.failedSignalsQuery();
return list;
}
}