【发布时间】:2019-09-19 22:41:07
【问题描述】:
所以如果我有一个套接字服务器,我可以接受每个套接字并将其传递给一个执行程序
while(true){
Socket conn = socketServ.accept();
Runnable task = new Runnable() {
@Override
public void run() {
try{
server.executor(conn);
} catch(IOException e){
}
}
};
exec1.execute(task);
}
这样做可以让我的服务器在我的线程上运行并且不会阻塞同一个线程。因为我还引用了那个名为“conn”的套接字,所以我也可以成功返回消息。
现在我有了一个 RMI 接口,基本上可以让我来回调用方法。
例如,如果我有这个方法:
public MusicServerResponseImpl CreatePlayerlist(String Name, UserObjectImpl uo) throws RemoteException {
MusicServerResponseImpl res = new MusicServerResponseImpl();
return res;
}
返回一个可序列化的对象。我担心的是当这条消息被调用时,我认为它将在服务器的主线程中被调用,因此会阻塞该线程并减慢并行性。
我认为解决方案是让每个 RMI 方法也为执行程序创建一个任务..以加快所有内容的执行...但是我看到的这个问题与我有一个对象的套接字不同要将信息发送回,我不确定如何从 RMI 方法返回响应,而不必以某种方式阻塞线程。
这有意义吗?基本上我是在问我如何才能与 RMI 方法并行执行,同时仍然能够返回结果!
感谢您的帮助!
【问题讨论】:
标签: java sockets networking parallel-processing rmi