ConcurrentLinkedQueue在java的原理探究

美女程序员鼓励师

本教程操作环境: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的源码和构造函数进行分析,相信现在大家已经对其概念和用法有了很好的理解了。

以上是 ConcurrentLinkedQueue在java的原理探究 的全部内容, 来源链接: utcz.com/z/542519.html

回到顶部