Skip to content

Multithreaded console application for simulation of customer service in a store with several cash desks

kvigor83/ShopQueueSimulyator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

входные данные для модели считываются единожды в начале моделирования из файла data.properties и хранятся для доступа в объекте-синглтоне DataSource для доспупа из разных частей программы.

в модели стартуют поток-кассы CashDesk,каждый для работы получает очередь клиентов CashDeskQueue.

Операции над очередями(добавлени/удаление) сопробождаются блокированием очереди через объект cashDeskLock, если очередь пустая, то состояние await до момента пока не появится клиент Signal, и так покругу пока все клиенты не пройдут через все кассы

клиент, который в данный момент времени обслуживается в кассе считается первым в очереди(учитывается при вычислении длины очереди), и удадяется из очереди по окончании обслуживания клиента.

клиенты приходят по одному случайным образом не реже одного клиента в минуту(60 сек).

для ускорения процесса моделирования при установке таймаутов секунды заменены на милисекунды.

для реализации переходов посетителей между очередями, каждый раз после того, как уменьшается одна из очередей(обслужен очередной клиент) зарускается поток монитор QueueMonitor, он пробегает по очередям и ищет ситуации, когда одна очередь больше другой, более чем на 2 клиента, и осуществляет перемещение.

Этот поток монитор QueueMonitor для экономии ресуксов запускается через исполнитель replaceExecutor

About

Multithreaded console application for simulation of customer service in a store with several cash desks

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages