• 技术文章 >java >java基础

    ConcurrentLinkedQueue在java的原理探究

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

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

    1.源码详解

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    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.构造函数

    1

    2

    3

    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学习网