首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

无锁同步栈兑现

2013-04-12 
无锁同步栈实现public class ConcurrentStackE {private AtomicReferenceNodeE top new AtomicRef

无锁同步栈实现

public class ConcurrentStack<E> {    private AtomicReference<Node<E>> top = new AtomicReference<Node<E>>();    ConcurrentStack(){    }        public void push(E item) {        Node<E> newHead = new Node<E>(item);        Node<E> oldHead = null;        do {            oldHead = top.get();            newHead.next = oldHead;        } while (!top.compareAndSet(oldHead, newHead));    }    public E pop() {        Node<E> newHead = null;        Node<E> oldHead = null;        do {            oldHead = top.get();            if (oldHead == null) { // return null;                continue;            }            newHead = oldHead.next;        } while (oldHead == null || !top.compareAndSet(oldHead, newHead));        return oldHead.item;    }    private static class Node<E> {        public final E item;        public Node<E> next;        public Node(E item) {            this.item = item;        }    }}

热点排行