Java

linkedBlockingQueue的offer方法解读

2019-03-05  本文已影响0人  悟空嘿

1.无界阻塞队列(严格的讲,应该是Integer.MAX_VALUE的linked队列)

构造方法

在构造方法中,使得last和head应用同一个Node节点。在后续的offer中至关重要。

2.offer方法在加重入锁,是一个线程安全的方法。在finally中释放,避免死锁。AtomicInteger是原子操作,在同时对queue进行offer,tack等操作时计数错误。

真正操作在enqueue(node)中。

offer方法

3.enqueue(node)方法

加入队列末尾

 last = last.next = node;有两层含义:last= node,last.nete = node;

分析:1)last.next = newNode,当node的size=1时,n1.next = node,last=newNode

                size = 2时,n2.next = newNode,last = node

                …………以此类推,

                n1->n2->n3->……->newNode;链式结构被确定下来。

重要的是理解last.next实际上是,指的last指代的对象的next的值,last = node变量的转换。

 很精练的代码,区分对象和引用理解的典型列子。

            

上一篇下一篇

猜你喜欢

热点阅读