SynchronousQueue(取自另一个问题) 
SynchronousQueue是更多的交接,而LinkedBlockingQueue正义只允许一个元素。区别在于,put()对a 的调用SynchronousQueue将在有相应的take()调用之前不会返回,但是LinkedBlockingQueue大小为1的put()调用(对空队列)将立即返回。实际上,它是BlockingQueue当您不需要队列(您不想维护任何待处理数据)时的实现。
LinkedBlockingQueue(LinkedList实现但并非完全是LinkedList它的JDK实现使用静态内部类Node维护元素之间的链接) 
LinkedBlockingQueue的构造方法
public LinkedBlockingQueue(int capacity) 
{
        if (capacity < = 0) throw new IllegalArgumentException();
        this.capacity = capacity;
        last = head = new Node< E >(null);   // Maintains a underlying linkedlist. ( Use when size is not known )
}
用于维护链接的节点类
static class Node<E> {
    E item;
    Node<E> next;
    Node(E x) { item = x; }
}
3。ArrayBlockingQueue(数组实现)
ArrayBlockingQueue的构造方法
public ArrayBlockingQueue(int capacity, boolean fair) 
{
            if (capacity < = 0)
                throw new IllegalArgumentException();
            this.items = new Object[capacity]; // Maintains a underlying array
            lock = new ReentrantLock(fair);
            notEmpty = lock.newCondition();
            notFull =  lock.newCondition();
}
之间IMHO最大的区别ArrayBlockingQueue并且LinkedBlockingQueue是从一个构造已清楚底层数据结构阵列和其他链表。
ArrayBlockingQueue使用单锁双重条件算法,并且LinkedBlockingQueue是“两个锁队列”算法的变体,它具有2个锁2个条件(takeLock,putLock)