Home | History | Annotate | Download | only in concurrent

Lines Matching defs:TAIL

58  * The <em>tail</em> of the queue is that element that has been on the
60 * are inserted at the tail of the queue, and the queue retrieval
126 * reached in O(1) time from tail, but tail is merely an
150 * Both head and tail are permitted to lag. In fact, failing to
154 * that is, we update head/tail when the current pointer appears
157 * Since head and tail are updated concurrently and independently,
158 * it is possible for tail to lag behind head (why not)?
173 * Both head and tail may or may not point to a Node with a
175 * be null. Upon creation, both head and tail refer to a dummy
176 * Node with null item. Both head and tail are only updated using
217 * - it is permitted for tail to lag behind head, that is, for tail
226 * - the last node is always reachable from tail via succ()
227 * - tail != null
229 * - tail.item may or may not be null.
230 * - it is permitted for tail to lag behind head, that is, for tail
232 * - tail.next may or may not be self-pointing to tail.
234 private transient volatile Node<E> tail;
240 head = tail = newNode(null);
266 tail = t;
272 * Inserts the specified element at the tail of this queue.
304 * Inserts the specified element at the tail of this queue.
313 for (Node<E> t = tail, p = t;;) {
328 // We have fallen off list. If tail is unchanged, it
331 // reachable. Else the new tail is a better bet.
332 p = (t != (t = tail)) ? t : head;
334 // Check for tail updates after two hops.
335 p = (p != t && t != (t = tail)) ? t : q;
530 // Atomically append the chain at the tail of this collection
531 for (Node<E> t = tail, p = t;;) {
539 // Try a little harder to update tail,
541 t = tail;
550 // We have fallen off list. If tail is unchanged, it
553 // reachable. Else the new tail is a better bet.
554 p = (t != (t = tail)) ? t : head;
556 // Check for tail updates after two hops.
557 p = (p != t && t != (t = tail)) ? t : q;
677 * The elements will be returned in order from first (head) to last (tail).
811 tail = t;
923 return U.compareAndSwapObject(this, TAIL, cmp, val);
934 private static final long TAIL;
941 TAIL = U.objectFieldOffset
942 (ConcurrentLinkedQueue.class.getDeclaredField("tail"));