public final void collect ()
  {
    if (m_aPerformer == null)
      throw new IllegalStateException ("No performer set!");

    try
    {
      // The temporary list that contains all objects to be delivered
      while (true)
      {
        // Block until the first object is in the queue
        final Object aCurrentObject = m_aQueue.take ();
        if (aCurrentObject == STOP_QUEUE_OBJECT)
          break;

        _perform (GenericReflection.uncheckedCast (aCurrentObject));
      }
    }
    catch (final Exception ex)
    {
      LOGGER.error ("Error taking elements from queue - queue has been interrupted!!!", ex);
    }
  }
public final void collect ( ) { if ( m_aPerformer == null ) throw new IllegalStateException ( "No performer set!" ) ; try { while ( true ) { final Object aCurrentObject = m_aQueue . take ( ) ; if ( aCurrentObject == STOP_QUEUE_OBJECT ) break ; _perform ( GenericReflection . uncheckedCast ( aCurrentObject ) ) ; } } catch ( final Exception ex ) { LOGGER . error ( "Error taking elements from queue - queue has been interrupted!!!" , ex ) ; } }
This method starts the collector by taking objects from the internal
{@link BlockingQueue}. So this method blocks and must be invoked from a
separate thread. This method runs until {@link #stopQueuingNewObjects()} is
new called and the queue is empty.

@throws IllegalStateException
if no performer is set - see
{@link #setPerformer(IConcurrentPerformer)}