Пару вещей для размышления:
Вы имитируете 12-часовой день, с разрешением 1 минута, вам не нужно, чтобы ваша программа действительно выполняла в течение определенного периода времени (т.е. есть Thread.sleep()
в любой момент не требуется).
Вы хотите очередь FIFO, PriorityQueue
по определению не является очередью FIFO. (Я не проверял, действительно ли это имеет значение в вашем случае, но вы, вероятно, должны знать о разнице).
Делать такие вещи:
try {
newCustomer(totalCustomers); //enque customer
serveCustomer();
} catch(Exception e){/*Catch 'em all*/}
Не вызовет ничего, кроме разочарования и зачесывания волос.
Редактировать
Если нет особого требования использовать sleep()
для определения времени вашего кода (неясно, но я предполагаю, что нет), что-то вроде этого будет намного проще:
for(int minute = 0; minute < 720; minute++){
// process customer arrival and service
}
Надеюсь, это может дать вам некоторые идеи.