Java 理论与实践: 非阻塞算法简介(二)

2014-11-23 22:09:43 · 作者: · 浏览: 1
Node oldHead;
Node newHead;
do {
oldHead = head.get();
if (oldHead == null)
return null;
newHead = oldHead.next;
} while (!head.compareAndSet(oldHead,newHead));
return oldHead.item;
}

static class Node {
final E item;
Node next;

public Node(E item) { this.item = item; }
}
}


性能考虑

在轻度到中度的争用情况下,非阻塞算法的性能会超越阻塞算法,因为 CAS 的多数时间都在第一次尝试时就成功,而