首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

非堵塞队列插入算法

2012-11-19 
非阻塞队列插入算法? ?摘自:?http://www.ibm.com/developerworks/cn/java/j-jtp04186/?public class Linke

非阻塞队列插入算法

? ?摘自:?http://www.ibm.com/developerworks/cn/java/j-jtp04186/

?

public class LinkedQueue <E> {    private static class Node <E> {        final E item;        final AtomicReference<Node<E>> next;        Node(E item, Node<E> next) {            this.item = item;            this.next = new AtomicReference<Node<E>>(next);        }    }    private AtomicReference<Node<E>> head        = new AtomicReference<Node<E>>(new Node<E>(null, null));    private AtomicReference<Node<E>> tail = head;    public boolean put(E item) {        Node<E> newNode = new Node<E>(item, null);        while (true) {            Node<E> curTail = tail.get();            Node<E> residue = curTail.next.get();            if (curTail == tail.get()) {                if (residue == null) /* A */ {                    if (curTail.next.compareAndSet(null, newNode)) /* C */ {                        tail.compareAndSet(curTail, newNode) /* D */ ;                        return true;                    }                } else {                    tail.compareAndSet(curTail, residue) /* B */;                }            }        }    }}
?

?

热点排行