天天看点

Java并发-入队列/出队列入队列出队列

入队列

入队列就是将入对节点添加到队列的尾部

举个例子:

·添加元素1。队列更新head节点的next节点为元素1节点。又因为tail节点默认情况下等于head节点,所以它们的next节点都指向元素1节点。

·添加元素2。队列首先设置元素1节点的next节点为元素2节点,然后更新tail节点指向元素2节点。

·添加元素3。队列首先设置tail节点的next节点为元素3节点。

·添加元素4。队列首先设置元素3的next节点为元素4节点,然后将tail节点指向元素4节点

Java并发-入队列/出队列入队列出队列

做两件事:

1.将入队节点设置成当前队列尾节点的下一个节点

2.更新tail节点,如果tail节点的next节点不为空,则将入队节点设置成tail节点,如果tail节点的next节点为空,则将入队节点设置成tail的next节点,所以tail节点不总是尾节点。

上述只是单线程下

出队列

同样也是基于单线程下

Java并发-入队列/出队列入队列出队列

并不是每次出队时都更新head节点,当head节点里有元素时,直接弹出head节点里的元素,而不会更新head节点。只有当head节点里没有元素时,出队操作才会更新head节点