JUC对于集合的支持
public boolean add(E e) { final ReentrantLock lock = this.lock; //注意这里,基于ReentrantLock lock.lock(); try { Object[] elements = getArray(); int len = elements.length; //数字copy Object[] newElements = Arrays.copyOf(elements, len + 1); newElements[len] = e; setArray(newElements); return true; } finally { lock.unlock(); } }
public boolean offer(E e) { checkNotNull(e); final NodenewNode = new Node(e); for (Nodet = tail, p = t;;) { Nodeq = p.next; if (q == null) { //注意这里,通过CAS新增节点 if (p.casNext(null, newNode)) { if (p != t) // hop two nodes at a time casTail(t, newNode); // Failure is OK. return true; } } else if (p == q) p = (t != (t = tail)) ? t : head; else p = (p != t && t != (t = tail)) ? t : q; } }
Copyright © 2023 leiyu.cn. All Rights Reserved. 磊宇云计算 版权所有 许可证编号:B1-20233142/B2-20230630 山东磊宇云计算有限公司 鲁ICP备2020045424号
磊宇云计算致力于以最 “绿色节能” 的方式,让每一位上云的客户成为全球绿色节能和降低碳排放的贡献者