A barbershop has a cutting room with one chair and a waiting room with five chairs. A limitless number of customers enter the waiting room one at a time if space is available, otherwise they go to another shop. Each time the barber finishes a haircut, the customer must pay at the cash register, only one customer may pay at a time, addition customers waiting to pay must wait, if the cashier is asleep, the paying customer must wake the cashier up, after paying the customer leaves to go to another store, if the cashier has no waiting customers, the cashier falls asleep. A waiting customer, if there is one, enters the cutting room and has a haircut. Customers may enter the waiting room one at a time, or waiting customer may enter the (empty) cutting room one at a time, but these events are mutually exclusive. If the barber discovers that the waiting room is empty, the barber falls asleep in the waiting room. An arriving customer, finding the barber asleep, wakes the barber and has a haircut, otherwise the arriving customer waits.
Must use Java Semaphores.
-The time cutting is random between 1 and 3 seconds
-The simulation must run for at least 2 minutes.
-Customers enter the store randomly between 1 and 3 seconds
-Cash register takes between 1 and 3 seconds cashing out a customer.
-Seconds are in whole numbers. (1,2 or 3)
Simulation must show the following console output:
-Status of the barber, clients and cashier when any changes occur.
-Number of customers at all points, at all times.
-When the barber is asleep.
-When the cashier is asleep.
-When the chairs are full.
-The number of customers waiting to pay
Also provide the README file to describe the use of system