Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javarmi线程系统_Java_Multithreading_Rmi - Fatal编程技术网

javarmi线程系统

javarmi线程系统,java,multithreading,rmi,Java,Multithreading,Rmi,假设一个简单的JavaRMI系统(HelloWorld),我的问题是,如果我在客户端运行10个线程来调用远程(服务器)对象,目标服务器是否也会创建10个线程?或者他们将通过队列或其他方式继续进行? 问题:可能有一些对远程对象的并发调用,其中一个可能需要很长的处理时间,所以现在我应该注意服务器端的线程,或者可能有一些可用于这种情况的实现。 提前感谢。未指定。RMI规范所说的只是客户机线程和服务器线程之间没有保证的关联 它的神秘含义是,你不能假设它是单线程的 具体实现的行为如何取决于他们。例如,Or

假设一个简单的JavaRMI系统(HelloWorld),我的问题是,如果我在客户端运行10个线程来调用远程(服务器)对象,目标服务器是否也会创建10个线程?或者他们将通过队列或其他方式继续进行?
问题:可能有一些对远程对象的并发调用,其中一个可能需要很长的处理时间,所以现在我应该注意服务器端的线程,或者可能有一些可用于这种情况的实现。

提前感谢。

未指定。RMI规范所说的只是客户机线程和服务器线程之间没有保证的关联

它的神秘含义是,你不能假设它是单线程的

具体实现的行为如何取决于他们。例如,Oracle的RMI/JRMP在每个接受的连接上使用一个新线程,不需要排队,但这通过客户端的连接池得到了缓解。上次我查看时,IBM使用了一个线程池,这意味着一个队列。还有其他实现

一般来说,最后一个问题的答案是,除了确保最小但足够的同步之外,您不必做任何事情

编辑对@CyberneticWerkGuruorc删除答案中链接的一些评论,其中提到了2002年在RMI基础上构建的一个模糊且过时的框架:

  • 他一直说“自治”,意思是“异步”
  • 他错误地说,如果客户端“回家”,连接线程“永远挂起”
  • 你需要有数量惊人的客户竞争一个资源,让他们中的一个因为等待而“回家”
  • 您已经可以通过系统属性在RMI中获得客户端超时
  • 使用
    Object.wait()
    和通知线程来实现超时是非常粗糙的
  • 客户端通常不能关闭服务器。服务器应该在自己的最佳时间自行关闭。在远程接口中包含
    shutdown()
    方法显然是安全漏洞
  • 他误用了“坚持不懈”这个词。持久化服务器在重启后仍能生存,例如
    可激活的
  • “线程内存”一词没有出现在Java语言规范的第17章中。他将形式记忆模型与运行时实际发生的情况混为一谈

  • 它很可能同时使用队列和线程进行异步调用。