самый простой подход - иметь 3 коллекции за одним интерфейсом. При вызове MoveNext
проверьте тот, который имеет наивысший приоритет, если есть сообщения, возвращайте их, пока очередь не опустеет. Затем все ниже и ниже. Затем вы можете улучшить алгоритм выбора следующей очереди, например, реализовать вероятностную.
В вашем конкретном случае вы должны использовать вероятностное планирование.
Urgent
имеет 5/10 = 0.5
Medium
имеет 0.3
Low
имеет 0.2
На каждом ходу генерировать случайное число в диапазоне [0; 1]
. если значение попадает в [0; 0,5]
, выберите из очереди Urgent
, если в [0,5; 0,8]
, то Medium
, [0,8; 1]
-> Low
;