javarmi方法同步
我有一个存储在“服务器”上的类,多个客户端可以调用此方法。此方法返回一个类。现在,当客户端调用此类中的访问器方法时,例如set访问器方法。我希望服务器上的对象在所有其他客户端之间更新和同步 如何使用:javarmi方法同步,java,synchronization,rmi,Java,Synchronization,Rmi,我有一个存储在“服务器”上的类,多个客户端可以调用此方法。此方法返回一个类。现在,当客户端调用此类中的访问器方法时,例如set访问器方法。我希望服务器上的对象在所有其他客户端之间更新和同步 如何使用: public synchronized setStatus(String s) { this.status = s; } 在java中实现这一点 感谢synchronized关键字不执行此功能,相反,synchronized关键字尝试获取当前对象的内部锁 让您的所有客户端将自己导出为远程对象,并
public synchronized setStatus(String s) { this.status = s; }
在java中实现这一点
感谢synchronized关键字不执行此功能,相反,
synchronized
关键字尝试获取当前对象的内部锁
让您的所有客户端将自己导出为远程
对象,并向服务器注册更新。当您的一个客户端更新服务器时,服务器将调用所有注册的远程
客户端,要求它们刷新
这可以通过
Observer
模式实现。如果您的所有客户机都实现了java.util.Observer
接口,并且服务器或(如果您的类是远程
)您所关心的类可以扩展java.util.Observable
。当类/服务器更新时,可以用新值通知观察者,这将节省客户端向服务器请求新值时的一些网络延迟。我正在尝试理解这个问题。我有两个想法:
getObject()
远程调用,然后希望更新返回的对象并使其在所有客户端之间同步。这行不通。将对象传递给客户机后,更新仅在该客户机本地进行 public String getStatus() throws RemoteException;
如果是这种情况,那么您的客户机调用,无论是否调用了
set
方法,都将收到新值 这个方法返回一个类。“你的意思是它返回一个*对象吗?”这个对象是远程对象,还是只是一个可序列化的对象?我没有说任何关于竞争条件的事情。