我知道下面的代码的各个部分都丢失了,我的问题是关于 RemoteImplemntation 中的同步机制。我也了解这个网站和其他关于 RMI 和同步的问题;在这里,我正在寻找明确的确认/矛盾。
我的问题是:当我有多个客户端同时运行时,这是一种同步调用 add 方法的合理方法吗?即,假设所有的 id 都不同,那么在 20 个客户端在同时启动的不同机器上完成执行后,树集的大小会是 20,000 吗?
public interface RemoteInterface extends Remote {
void add(String id) throws RemoteException;
}
public class RemoteImplemenation implements RemoteInterface{
TreeSet<String> ids = new TreeSet<String>();
final Object lock = new Object();
public void add(String id) {
synchronized(lock) {
ids.add(id);
}
}
}
public class Client {
public static void main(String[] args) {
RemoteInterface remote = (RemoteInterface)Naming.lookup(...);
for (int i=0;i<1000;i++) {
remote.add(ipaddress+"_"+i);
}
}
}