1.链表阻塞队列–LinkedBlockingQueue原理
1.1.概述
1>.LinkedBlockingQueue是基于链表的阻塞队列,
其内部维护了一个数据缓冲队列(该队列由一个链表构成),当生产者往队列中放入一个数据时,队列会从生产者手中获取数据,并缓冲在队列内部,而生产者立即返回.只有当队列缓冲区达到最大缓存容量时(LinkedBlockingQueue可以通过构造函数指定该值),会阻塞生产者线程,直到消费者从队列中消费掉一个数据,生产者线程才会被唤醒.
反之,对于消费者这端的处理也基于同样的原理;
2>.LinkedBlockingQueue之所以能够高效的处理并发数据,是因为其对生产者端和消费者端分别采用了独立的锁来控制数据同步,
这也意味着在高并发的情况下生产者和消费者可以并行的操作队列中的数据,以此来提高整个队列的并发性能
;
3>.作为开发者,我们需要注意的是,如果构造一个LinkedBlockingQueue对象,而没有指定其容量大小,那么LinkedBlockingQueue会默认初始化一个类似无限大小的容量(默认为Integer.MAX_VALUE),
这样的话,如果生产者速度一旦大于消费者的速度,也许还没有等到队列满阻塞产生,系统内存就有可能已被消耗殆尽了;
4>.特性:
①.LinkedBlockingQueue支持有界;
②.LinkedBlock