在Java RMI中,是为每个创建的新远程对象启动的新线程吗?
如果是这样,这个线程是一种监听器线程,它通过为每个方法调用创建一个新线程来服务传入的调用吗?
我刚刚想出了这个心理模型,我正在寻找验证。
答案 0 :(得分:0)
RMI规范既没有规定也没有拒绝任何线程模型。编程程序的远程部分(在服务器中运行)时,您应该假设同一个对象可以同时被两个或多个线程访问,因此您需要同步访问可变字段(即使我认为大多数实现序列化调用)
来自the spec
由RMI运行时调度到远程对象的方法 实现可能会也可能不会在单独的线程中执行。 RMI 运行时不保证映射远程对象 对线程的调用。由于远程方法调用相同 远程对象可以并发执行,远程对象实现 需要确保其实现是线程安全的。