jdk11源码--LinkedBlockingQueue源码分析
概述 上一篇介绍了jdk11源码--ArrayBlockingQueue源码分析,接下来看一下LinkedBlockingQueue的实现。这两个阻塞队列最大的区别就是底层元素存储实现不同,ArrayBlockingQueue是基于==数组==,而LinkedBlockingQueue是基于==单向链表==。 LinkedBlockingQueue类图如下: LinkedBlockingQueue也是==FIFO==先进先出队列,其实现是 ==双锁队列two lock queue== 算法的变体,它内部维护了一个takeLock和一个putLock,也可以理解为读写锁的一种实现方式。==思想:锁分离,提高性能。==下面结合源码具体分析。 构造方法 网上有的说LinkedBlockingQueue是无界队列,其实不太准确,具体看下面的源码。下面两个构造方法,一个是有参数的,设置容量大小。这是有界队列。一个是无参数的构造方法,其内部实现是设置容量大小为Integer.MAX_VALUE的队列,这就是网络上说的无界队列,其实还是有界的,只不过比较大,是Integer.MAX_VALUE。 p...