Неизменяемые объекты обычно предпочитаются в современных практиках программирования.Это обычно делает вещи ... проще в отношении роста объектной модели и будущих улучшений (и нет, я не считаю подход Python «Давайте все будем ответственными взрослыми» как современный ради аргумента).
Что касается решения вашей проблемы, вы, возможно, могли бы пройти умную реализацию "Делегирование" BlockingQueue
, которая будет реализовывать стандартный интерфейс, но обеспечит его некоторым механизмом переключения очередей, управляемым изнутри или снаружи, поскольку ваша спецификация требует