protected QueueChannel(BasicQueue<Message> queue, OverflowPolicy overflowPolicy, boolean singleConsumer) {
this.queue = queue;
if (!singleConsumer || queue instanceof CircularBuffer)
this.sync = new SimpleConditionSynchronizer(this);
else
this.sync = new OwnedSynchronizer(this);
this.overflowPolicy = overflowPolicy;
this.sendersSync = overflowPolicy == OverflowPolicy.BLOCK ? new SimpleConditionSynchronizer(this) : null;
}