/* Distributed Semaphore, sample client */ // must have interface file, but not the implementation file import java.rmi.*; public class dmclient { // args[0]=id, args[1]=server ip addr public static void main(String[] args) throws Exception { System.setProperty("java.security.policy", "client.policy"); System.setSecurityManager( new RMISecurityManager()); String id = args[0]; // identifies itself String serveraddr = args[1]; // identifies server (ip or hostname) dmutex DM; DM = (dmutex)Naming.lookup("rmi://"+serveraddr+"/dmutex0"); // enter into loop int s = (int)(Math.random()*8000); // random delay time System.out.println(id+" delay time = "+s+"ms"); for (int i=0; i<10; i++) { System.out.println(id+" remote synch..."); DM.lock(); System.out.println(id+" acquired lock"); Thread.sleep(s); // simulated delay DM.unlock(); } } //main }