rendered paste bodypublic class Alternate
{
private static Object monitor = new Object();
private static Object doneMonitor = new Object();
public static String[] halls = ResidentInput.getHallNames();
public static int[] rooms = ResidentInput.getHallRooms();
public static String[] enrollRequests;
public static String name;
public static void main (String[] args)
{
Alternate a = new Alternate();
Thread t1 = new Thread(new Alternator("Tom", monitor, doneMonitor));
Thread t2 = new Thread(new Alternator("Jerry", monitor, doneMonitor));
t1.start();
t2.start();
}
}
public class Alternator implements Runnable
{
public String name;
public Object monitor;
public Object doneMonitor;
public Alternator(String name, Object monitor, Object doneMonitor)
{
this.doneMonitor = doneMonitor;
this.monitor = monitor;
this.name = name;
if (name.equalsIgnoreCase("Tom"))
Alternate.enrollRequests = ResidentInput.getEnrollRequestsTom();
if (name.equalsIgnoreCase("Jerry"))
Alternate.enrollRequests = ResidentInput.getEnrollRequestsJerry();
}
public void run()
{
synchronized(monitor)
{
for(int x = 0;x < Alternate.enrollRequests.length;x++)
{
boolean found = false;
String currentReq = Alternate.enrollRequests[x];
for(int y = 0;y < Alternate.halls.length && found == false;y++)
{
if (currentReq.equalsIgnoreCase(Alternate.halls[y]))
{
found = true;
if (Alternate.rooms[y]>0)
{
Alternate.rooms[y]--;
System.out.println(name + " - " + currentReq + " - OK");
}
else
System.out.println(name + " - " + currentReq + " - REJECTED");
}
}
if (found == false)
{
System.out.println(name + " - " + currentReq + " - NONEXIST");
}
monitor.notifyAll();
try
{
monitor.wait();
}
catch (InterruptedException e) {}
}
}
synchronized(doneMonitor)
{
doneMonitor.notifyAll();
}
}
}