\begin{slide}{Non-Blocking Stack}

Anwendung: Scheduling-Algorithmen:

(jeder Thread hat Stack mit Aufgaben,
andere Threads können dort 
Aufgaben hinzufügen und entfernen)


\begin{verbatim}
private static class Node<E> {
  E item; Node<E> next;
}
class Stack<E> { 
  AtomicReference<Node<E>> top 
    = new AtomicReference<Stack.Node<E>>();
  public void push (E x) 
  public E pop ()
}
\end{verbatim}
  

\end{slide}
