Do this program in java. The specs are:
a small take out place call burrito brothers.
(assume the burrito ingredients are infinite)
there are 3 servers that own a private beef area, cheese area and tortilla area,
each server has their own ingredients in infinite supply.
there are 3 counter locations, a cash register and a waiting area that can accommodate up to 15 customers max.
A customer cannot enter the shop if it's filled to capacity.
if the shop is not full a customer can enter.
Each customer will enter the shop with 1 to 20 burritos.
As soon as a server is free the customer that has the shortest order is served next.
A server is either serving a customer or waiting.
Each server will make (at most) 3 burritos at a time for a given customer.
Once a server has obtain all ingredients a burrito can be made.
when a customer's entire order is finished the customer pays a cashier and leaves the shop.
Since there is only one cash register only 1 patron may pay at a time.
However, in the event that a customer's entire order has not been filled by the server at the completion of the current counter visit the customer must reenter the waiting area.
the waiting area is organized by the shortest order next.
Implement a solution to this problem as a Java application using java semaphore classes for synchronization.
output must include the arrival of each customer and each stat transition: leaving full shop, entering shop with an order of m burritos, customer standing, getting service from server n, paying, and leaving.
Each customer is represented by a corresponding thread and each server in your implementation is also represented by a unique java thread.
All customers and servers exist within a single application.
The finished assignment must include the following:
A methodology and design document.
A java burrito brothers implementation.
The java Source Code.
Class files.
The system must compile using the command javac *.java.
The system output from a run of your application.