AIM:
To write a java program for the multiple
sleeping barbers in multi-processor operating system.
ALGORITHM:
Step 1:
Start the program
Step 2:
while the barber in process is true runs an infinite
loop
Step 3:
Barber tries to acquire a customer.
Step 4:
If none is available the barber goes to sleep.
Step
5:
At this time, he has been awakened and wants to modify
the number of available seats.
Step 6:
Barber waits for a customer to arrive
Step 7:
If customer arrived run an infinite loop.
Step
8:
Checks if the NumberOfFreeSeats is greater than zero,
sit down on the chair. Otherwise goto step 13.
Step 9:
V(Customers) notify the barber, who's waiting that
there is a customer
Step
10:
V(accessSeats) don't need to lock the chairs anymore
Step
11:
P(Barber) now it's this customers turn, but wait if the
barber is busy
Step
12:
Here the customer is having his hair cut
Step
13:
V(accessSeats) The lock on the seats is removed.
Customer leaves without a haircut.
Step
14:
End of program.
PROGRAM:
import java.io.*;
import java.lang.*;
class cust {
public int disp(int cn)
{
return(cn);
}
}
class em1 extends Thread{
main2 m=new main2();
cust c=new cust();
public synchronized void run()
{
try
{
while(m.cnum<=m.n)
{
int t=c.disp(m.cnum++);
System.out.println("Barber2 serves Customer "+t);
Thread.sleep(2000);
}
System.out.println("Barber2 sleeps ");
}
catch(Exception e){}
}
}
public class main2 {
static int cnum=1,n,ch,n1;
public static void main(String[]
args) {
try
{
BufferedReader br=new BufferedReader(new
InputStreamReader(System.in));
em1 e=new em1();
cust c=new cust();
int j;
System.out.println("Enter no of Chairs
including two barber Chairs: ");
ch=Integer.parseInt(br.readLine());
System.out.println("Enter no of Customers
: ");
n=Integer.parseInt(br.readLine());
e.start();