• 技术文章 >java >java基础

    ConcurrentLinkedQueue在java的原理探究

    小妮浅浅小妮浅浅2021-02-09 12:38:53原创2157

    本教程操作环境:windows7系统、java10版,DELL G3电脑。

    1.源码详解

    private static class Node<E> {
        volatile E item;
        volatile Node<E> next;
     
        Node(E item) {
            UNSAFE.putObject(this, itemOffset, item);
        }
     
        boolean casItem(E cmp, E val) {
            return UNSAFE.compareAndSwapObject(this, itemOffset, cmp, val);
        }
     
        void lazySetNext(Node<E> val) {
            UNSAFE.putOrderedObject(this, nextOffset, val);
        }
     
        boolean casNext(Node<E> cmp, Node<E> val) {
            return UNSAFE.compareAndSwapObject(this, nextOffset, cmp, val);
    }

    2.构造函数

    public ConcurrentLinkedQueue() {
        head = tail = new Node<E>(null);
    }

    当创建对象时,头尾节点都是指向一个空节点。

    以上就是关于ConcurrentLinkedQueue在java的原理探究,本篇我们从ConcurrentLinkedQueue的源码和构造函数进行分析,相信现在大家已经对其概念和用法有了很好的理解了。

    专题推荐:java,concurrentlinkedqueue原理
    上一篇:java ConcurrentLinkedQueue是什么 下一篇:java中ConcurrentLinkedQueue的入队

    相关文章推荐

    • java中linkedblockingqueue用法• linkedblockingqueue在java中的原理• java中linkedblockingqueue的增加方法• linkedblockingqueue在java中出队• java ConcurrentLinkedQueue是什么

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网