public static <E> ConcurrentQueue<E> newQueue(ConcurrentQueueSpec qs) {
        if (qs.isBounded()) {
            // SPSC
            if (qs.consumers == 1 && qs.producers == 1) {

                return new SpscArrayConcurrentQueue<E>(qs.capacity);
            }
            else {
                return new MpmcArrayConcurrentQueue<E>(qs.capacity);
            }
        }
        return new GenericQueue<E>();
    }
The queue factory produces {@link ConcurrentQueue} instances based on a best fit to the {@link ConcurrentQueueSpec}.
This allows minimal dependencies between user code and the queue implementations and gives users a way to express
their requirements on a higher level.

@author nitsanw
jctools-experimental/src/main/java/org/jctools/queues/alt/ConcurrentQueueFactory.java