Мне нужна очередь блокировки размером 1, и каждый раз, когда применяется put, она удаляет последнее значение и добавляет следующее. Потребители будут пулом потоков, в котором каждый поток должен прочитать сообщение, когда оно будет помещено в очередь, и решить, что с ним делать, но они не должны иметь возможность брать из очереди, поскольку все они должны читать от него.
Я подумывал просто взять и поместить каждый раз, когда производитель отправляет новое сообщение, но наличие только просмотра в методе запуска потребителей приведет к тому, что они будут постоянно просматривать, не так ли? В идеале сообщение исчезнет, как только просмотр прекратится, но я не хочу использовать опрос по времени, поскольку нет гарантии, что каждый потребитель успеет просмотреть сообщение вовремя.
Мой другой вариант на данный момент - перебрать коллекцию потребителей и вызвать для них общедоступный метод с сообщением, но я действительно не хочу этого делать, поскольку система полагается на обновления в реальном времени, а большая коллекция займет некоторое время, чтобы полностью выполнить итерацию, если я просматриваю каждый вызов метода в стеке.