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 and 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
`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>`