Assignment Write a multithreaded Java program that uses eith
Solution
public class baboon{
public static boolean eastLock = false;
public static boolean westLock = false;
public static int onBranch = 0;
public static void main(String [] args)
{
BaboonEast bEast = new BaboonEast();
BaboonWest bWest = new BaboonWest();
for (int i=1; i<=10; i++)
{
new Thread(bEast, \"E: \"+i).start();
new Thread(bWest, \"W: \"+i).start();
//bEast.start();
}//for
}//main
}//class
class BaboonEast extends Thread
{
public void run()
{
while (baboon.westLock == true)
{
System.out.println(Thread.currentThread().getName() + \" waiting\");
try
{
sleep(50);
} catch (InterruptedException ex) {}
}//while
//baboon.eastLock = true; //stops west baboons entering
baboon.onBranch ++;
baboon.westLock = true;
baboon.eastLock = true;
System.out.println(\"Baboon \" + Thread.currentThread().getName() + \" is entering\");
try
{
sleep(100);
} catch (InterruptedException ex) {}
baboon.onBranch --;
System.out.println (\"Baboon \" + Thread.currentThread().getName() + \" has crossed\");
if (baboon.onBranch <= 0)
{
baboon.eastLock = false;
baboon.westLock = false;
}
//System.out.println(baboon.onBranch);
}//run
}//class
class BaboonWest extends Thread
{
public void run()
{
while (baboon.eastLock == true)
{
System.out.println(Thread.currentThread().getName() + \" waiting\");
try
{
sleep(50);
} catch (InterruptedException ex) {}
}//while
baboon.westLock = true; //stops east baboons entering
baboon.onBranch ++;
System.out.println(\"Baboon \" + Thread.currentThread().getName() + \" is entering\");
baboon.westLock = true;
baboon.eastLock = true;
try
{
sleep(100);
} catch (InterruptedException ex) {}
baboon.onBranch --;
System.out.println (\"Baboon \" + Thread.currentThread().getName() + \" has crossed\");
if (baboon.onBranch <= 0)
{
baboon.westLock = false;
baboon.eastLock = false;
}
//System.out.println(baboon.onBranch);
}//run
}//class




