我的应用程序可能有问题。有一个客户端运行多个线程,可能会通过Java RMI执行对服务器的非常耗时的调用。当然,来自一个客户的时间消耗呼叫不应该阻止其他人。
我测试过了,它可以在我的机器上运行。所以我在客户端创建了两个线程,并在服务器上创建了一个虚拟调用。启动时,客户端都会调用只包含大量sysout的虚拟方法。可以看出,这些调用是并行处理的,没有阻塞。
我很满意,直到一位同事指出RMI规范不一定能保证这种行为。
而真正的兰开斯特大学的HP文本指出关于线程使用的Java RMI规范:“..可能或不可以在单独的线程中执行”
“由RMI运行时调度到远程对象 实现(服务器)的方法可能会或可能不会在一个单独的线程中执行。 来自不同客户端的呼叫虚拟机将在不同的线程中执行 。从同一台客户机它不 保证每个方法将在一个单独的线程中运行” [1]
我能做些什么呢?它有可能在实践中不起作用吗?