Java 爪哇RMI';s UnicastRemoteObject

Java 爪哇RMI';s UnicastRemoteObject,java,rmi,Java,Rmi,我目前正在练习用Java实现RMI。其中一个要求是创建一个类来扩展UnicastRemoteObject,该对象包含可以远程调用的函数 我想知道扩展UnicastRemoteObject的类是否由所有连接的客户端共享。共享的意思是,从扩展UnicastRemoteObject的类创建的实例对象是否由连接的客户端同时使用?这取决于您如何使用它。通常,如果这是唯一的远程对象,您将在RMI注册表中注册它的一个实例,然后客户机查找它并对其调用方法,并且它们都共享同一个实例。但是,如果您需要,您将看到如何

我目前正在练习用Java实现RMI。其中一个要求是创建一个类来扩展UnicastRemoteObject,该对象包含可以远程调用的函数


我想知道扩展UnicastRemoteObject的类是否由所有连接的客户端共享。共享的意思是,从扩展UnicastRemoteObject的类创建的实例对象是否由连接的客户端同时使用?

这取决于您如何使用它。通常,如果这是唯一的远程对象,您将在RMI注册表中注册它的一个实例,然后客户机查找它并对其调用方法,并且它们都共享同一个实例。但是,如果您需要,您将看到如何为每个客户机分配一个。

有趣的是,我记得在注册表中绑定了对象的名称。所以,如果我没有弄错的话,一个注册表就是远程对象的一个实例。所以基本上,如果有两个客户端连接在同一个注册表上,那么这意味着它们共享同一个远程对象。我的类比正确吗?正如我刚才回答的,“他们都有相同的例子”。是的,你这样做了,只是确认我是否理解你是对的。接下来的一个问题是,如果两个客户端连接到同一个注册表,并且它们共享同一个对象,那么它们是否同时(同时)使用该对象?或者它们是由不允许同时使用函数(或对象)的某种机制控制的?RMI规范中没有关于线程的保证。这意味着您不能假设它是单线程的。任何需要的同步都是您的责任。