package com.lambdaworks.redis.internal;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Queue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ConcurrentLinkedDeque;
import java.util.concurrent.LinkedBlockingQueue;
/**
* This class is part of the internal API and may change without further notice.
*
* @author Mark Paluch
* @since 4.2
*/
public class LettuceFactories {
/**
* Creates a new {@link Queue} that does not require external synchronization.
*
* @param <T>
* @return a new, empty {@link ConcurrentLinkedDeque}.
*/
public static final <T> Deque<T> newConcurrentQueue() {
return new ConcurrentLinkedDeque<T>();
}
/**
* Creates a new {@link Queue} for single producer/single consumer.
*
* @param <T>
* @return a new, empty {@link ArrayDeque}.
*/
public static final <T> Deque<T> newSpScQueue() {
return new ArrayDeque<>();
}
/**
* Creates a new {@link BlockingQueue}.
*
* @param <E>
* @return a new, empty {@link BlockingQueue}.
*/
public static <E> BlockingQueue<E> newBlockingQueue() {
return new LinkedBlockingQueue<>();
}
}