一行一行读Java源码——LinkedBlockingQueue

  • 时间:
  • 浏览:2
  • 来源:大发5分6合APP下载_大发5分6合APP官网

前一天要看懂LinkedBlockingQueue的实现,都可不可以熟悉wait/notify以及AbstractQueuedSynchronizer(AQS)。题外话,此人 认为并发编程富含另十个 非常重要的东西:等待歌曲通知机制、CAS以及AQS。

LinkedBlockingQueue,顾名思义,另十个 链式的(linked)、阻塞的(Blocking)队列(Queue)。

Queue,首先想到的是FIFO特性。

Linked,Queue其特性本质上也是线性表,都可不可以由链表和顺序表实现,LinkedBlockingQueue也不我我也不我我链表实现,ArrayBlockingQueue是顺序表实现。因Queue 只在首尾操作,也不我我也不我我操作链表和顺序表的时间比较复杂度是一样的,但顺序表的实现会占用更少的空间,前一天这么 “指针”域(next),但空间都可不可以是连续的;链式实现这么 连续空间,但都可不可以使用next 来指向下另十个 节点位置,以下LinkedBlockingQueue的节点特性。

Blocking,阻塞,LinkedBlockingQueue是进程安全的,当队列满了前一天,所有的入队操作前一天被阻塞;当队列空了,所有的出队操作前一天被阻塞。队列初始化的前一天,大伙儿儿都可不可以指定队列长度capacity,前一天这么 指定,LinkedBlockingQueue的默认capacity是Integer.MAX_VALUE。显然,capacity还是另十个 不可更改的值。

能力与时间有限(当然主也不我我也不我我能力),错漏之处还请评论指正。