我知道下面的代碼的各個位都丟失了,我的問題是關於RemoteImplemntation中的同步機制。我也明白在這個站點和其他有關RMI和同步的問題上有幾個問題。我在這裏尋找明確的確認/矛盾。Java RMI同步
我的問題是:當我有幾個客戶端在同一時間運行,這是一個合理的方式來同步調用添加方法?也就是說,假設所有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);
}
}
}