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变量的转换。
很精练的代码,区分对象和引用理解的典型列子。
网友评论