gpt4 book ai didi

java RMI线程系统

转载 作者:行者123 更新时间:2023-11-30 06:16:49 31 4
gpt4 key购买 nike

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

最佳答案

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

这其中的神秘含义是您不能假设它是单线程的。

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

通常,您最后一个问题的答案是,除了确保最少但足够的同步外,您无需执行任何操作。

编辑 对@Cyber​​neticTwerkGuruOrc 已删除答案中的链接的一些评论,这些评论指的是基于 2002 年 RMI 构建的晦涩且过时的框架:

  1. 他一直说“自主”,意思是“异步”。
  2. 如果客户端“回家”,连接线程“永远挂起”,他的说法是错误的。
  3. 您需要数量惊人的客户竞争资源,因为其中一个客户会因为等待而“回家”。
  4. 您已经可以通过系统属性在 RMI 中获得客户端超时。
  5. 使用 Object.wait() 和通知线程来实现超时是极端粗暴的做法。
  6. 客户端通常不能关闭服务器。服务器应该在自己的最佳时间自行关闭。在远程接口(interface)中包含 shutdown() 方法是表面上的安全漏洞。
  7. 他误用了“坚持不懈”这个词。持久服务器在重启后仍然存在,例如 Activatable
  8. 术语“线程内存”没有出现在 Java 语言规范的第 17 章中。他将正式的内存模型与运行时实际发生的事情混为一谈。

关于java RMI线程系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26597169/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com