关于线程使用的 Java RMI 规范 : "..may or may not execute in a separate thread"

标签 java multithreading rmi specifications

我的申请可能有问题。有一个运行多个线程的客户端可能会通过 Java RMI 对服务器执行相当耗时的调用。当然,来自一个客户的耗时调用不应该阻止其他人。
我测试了它,它可以在我的机器上运行。所以我在客户端上创建了两个线程,在服务器上创建了一个虚拟调用。在启动时,客户端都调用只执行大量 sysout 的虚拟方法。可以看出这些调用是并行处理的,没有阻塞。
我非常满意,直到一位同事指出 RMI 规范不一定保证该行为。
确实,关于兰开斯特大学惠普的一篇文章指出

“A method dispatched by the RMI runtime to a remote object implementation (a server) may or may not execute in a separate thread. Calls originating from different clients Virtual Machines will execute in different threads. From the same client machine it is not guaranteed that each method will run in a separate thread” [1]

我该怎么办?有没有可能它在实践中行不通?

最佳答案

理论上,是的,您可能需要担心这一点。实际上,所有主流的 rmi 都会对所有传入调用进行多线程处理,因此除非您针对一些晦涩的 jvm 运行,否则您无需担心任何事情。

关于关于线程使用的 Java RMI 规范 : "..may or may not execute in a separate thread",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6858787/

相关文章:

java - Spring 从 root 上设置的 urlrewrite 规则中排除页面

c++ shared_ptr 从 char* 到 void*

objective-c - 在主线程上执行带有多个参数的方法的最简单方法是什么?

用于 IOT 项目的多个服务器通信的 Java 单客户端线程

Java RMI 客户端遇到 ClassCastException

java - 尝试在 if 语句内暂停程序执行 (Swing)

java - JAX-RS 中的 X 代表什么?

java - 如何使用 min() 函数在 sqlite 中指定查询

java - RMI 的替代品

java - 如何让 JMX 绑定(bind)到特定接口(interface)?