阻塞队列的实现原理
核心: lock锁+多条件(condition)的阻塞控制
Java中的阻塞队列使用BlockingQueue封装了根据condition条件阻塞线程的过程,使得我们不需要求关系繁琐的await和signal操作。
以生产消费者模式举例,使用阻塞队列可以不关系什么时候阻塞生产,什么时候阻塞消费。
实现: 各个阻塞队列都实现了BlockingQueue接口
常用阻塞队列:
ArrayBlockingQueue:
是一个用数组实现的、有界的阻塞队列,其内部实现是将对象放到一个数组里。有界也就意味着,它不能够存储无限多数量的元素。
LinkedBlockingQueue:
这是一种基于链表的阻塞队列;即,内部是以链表结构对其元素进行存储。
SynchronousQueue:
SynchronousQueue 是一个特殊的队列,它的内部同时只能够容纳单个元素。