Treiber stack

来源:互联网 发布:微艾薇h5建站 编辑:程序博客网 时间:2024/06/05 19:27

import java.util.concurrent.atomic.AtomicReference;/** * 使用Treiber算法 Treiber算法主要用于实现Stack,基于Treiber算法实现的无阻塞的Stack *  * @author feng *  * @param<E> */public class CurrentStack<E> {AtomicReference<Node<E>> head =new AtomicReference<Node<E>>();/*** push stack* @param item*/public void push(E item) {Node<E> newHead =new Node<E>(item);Node<E> oldHead;do {oldHead =head.get();newHead.next =oldHead;} while (!head.compareAndSet(oldHead,newHead));}/*** pop stack* @param item*/public E poll(){Node<E> oldHead;Node<E> newHead;do {oldHead =head.get();newHead =oldHead.next;} while (!head.compareAndSet(oldHead,newHead));returnoldHead.item;}static class Node<E> {final Eitem;Node<E> next;public Node(Eitem) {this.item =item;}}}


0 0