Package org.codehaus.groovy.util

## Class ManagedConcurrentLinkedQueue<T>

- java.lang.Object
- - org.codehaus.groovy.util.ManagedConcurrentLinkedQueue<T>

- Type Parameters:
    `T` - the type of values to store
  All Implemented Interfaces:
    `java.lang.Iterable<T>`

      public class ManagedConcurrentLinkedQueue<T>
      extends java.lang.Object
      implements java.lang.Iterable<T>

  A queue that stores values wrapped in a Reference, the type of which is determined by the provided `ReferenceBundle`. References stored in this queue will be removed when reference processing occurs.

  This queue is backed by a `ConcurrentLinkedQueue` and is thread safe. The iterator will only return non-null values (reachable) and is based on the "weakly consistent" iterator of the underlying `ConcurrentLinkedQueue`.

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ManagedConcurrentLinkedQueue​(ReferenceBundle bundle)` | Creates an empty ManagedConcurrentLinkedQueue that will use the provided `ReferenceBundle` to store values as the given Reference type.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `add​(T value)` | Adds the specified value to the queue.
    `boolean` | `isEmpty()` | Returns `true` if this queue contains no elements.
    `java.util.Iterator<T>` | `iterator()` | Returns an iterator over all non-null values in this queue.
    `T[]` | `toArray​(T[] tArray)` | Returns an array containing all values from this queue in the sequence they were added.
    `java.util.List<T>` | `values()` | Returns a list containing all values from this queue in the sequence they were added.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Constructor Detail

    - #### ManagedConcurrentLinkedQueue

          public ManagedConcurrentLinkedQueue​(ReferenceBundle bundle)

      Creates an empty ManagedConcurrentLinkedQueue that will use the provided `ReferenceBundle` to store values as the given Reference type.
      Parameters:
        `bundle` - used to create the appropriate Reference type for the values stored

  - ### Method Detail

    - #### add

          public void add​(T value)

      Adds the specified value to the queue.
      Parameters:
        `value` - the value to add

    - #### isEmpty

          public boolean isEmpty()

      Returns `true` if this queue contains no elements.

      This method does not check the elements to verify they contain non-null reference values.

    - #### toArray

          public T[] toArray​(T[] tArray)

      Returns an array containing all values from this queue in the sequence they were added.
      Parameters:
        `tArray` - the array to populate if big enough, else a new array with the same runtime type
      Returns:
        an array containing all non-null values in this queue

    - #### values

          public java.util.List<T> values()

      Returns a list containing all values from this queue in the sequence they were added.

    - #### iterator

          public java.util.Iterator<T> iterator()

      Returns an iterator over all non-null values in this queue. The values should be returned in the order they were added.
      Specified by:
        `iterator` in interface `java.lang.Iterable<T>`