package fileLock; import java.io.*; import java.nio.*; import java.nio.channels.*; import java.util.Scanner; public class Flock_test { static final String resource_name[]={"plane_reserve","hotel_reserve"}; static final int PLANE =0; static final int HOTEL =1; static final int MAX_RESOURCE = 2; FileResource resource[]; // we con't need this, but sometime we will use it... /** * @param args * @throws IOException * * Test routine for FileResoruce */ Flock_test() { resource = new FileResource[MAX_RESOURCE]; } public static void main(String args[]) throws IOException, FileNotFoundException, InterruptedException { Flock_test self = new Flock_test(); // We need an instance to make wait(int) happy. It is better than using static class. // For example, we can extend this example using Thread. self.run(args); } public synchronized void run(String args[]) throws IOException, InterruptedException { if (args[0]==null) { System.out.println("Please specify my name in command line."); return; } String myself = args[0]; FileResource plane = resource[PLANE] = new FileResource(resource_name[PLANE]); FileResource hotel = resource[HOTEL] = new FileResource(resource_name[HOTEL]); plane.open_with_lock(); if (!plane.reserve()) return; plane.release(); System.out.println(plane.resource_name()+" is reserved by "+myself+"."); wait(10); hotel.open_with_lock(); if (!hotel.reserve()) return; hotel.release(); System.out.println(hotel.resource_name()+" is reserved "+myself+"."); } }