queue阻塞队列和非阻塞队列的阻塞指的是:使用阻塞算法的队列用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现(里面使用的是ReentrantLock锁,在多线程入队时,如果获取不到锁,则会进入CLH队列阻塞)。非阻塞的实现方式则使用循环CAS的方式来实现。还有就是阻塞队列put和take方法,如果调用put方法时,队列已满,则线程会进入阻塞,等待调用消费方法时,唤醒对应的等待消费的阻塞线程,take方法反过来是一样的。
以下是实现阻塞接口的类:
queue阻塞队列和非阻塞队列的阻塞指的是:使用阻塞算法的队列用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现(里面使用的是ReentrantLock锁,在多线程入队时,如果获取不到锁,则会进入CLH队列阻塞)。非阻塞的实现方式则使用循环CAS的方式来实现。还有就是阻塞队列put和take方法,如果调用put方法时,队列已满,则线程会进入阻塞,等待调用消费方法时,唤醒对应的等待消费的阻塞线程,take方法反过来是一样的。
以下是实现阻塞接口的类: