今天看了ConcurrentLinkedQueue的源码,其中我对offer方法的理解和网上绝大多数博文一致(下图所示):
但是我自己debug程序却发现,添加第一个节点是这样子的:
原因已找到:idea默认debug开启了toString()预览,也就是bebug时候看到的值是通过toString()方法获得的。但是集合本身的toString(),会调用iterator()和itr.next(), itr.next()会调用 first()方法。first()方法会修改head的值。
参考:https://blog.csdn.net/AUBREY_CR7/article/details/106331490