org.springframework.batch.repeat.support
Class ResultHolderResultQueue

java.lang.Object
  extended by org.springframework.batch.repeat.support.ResultHolderResultQueue

public class ResultHolderResultQueue
extends Object

An implementation of the ResultQueue that throttles the number of expected results, limiting it to a maximum at any given time.

Author:
Dave Syer

Constructor Summary
ResultHolderResultQueue(int throttleLimit)
           
 
Method Summary
 void expect()
          Tell the queue to expect one more result.
 boolean isEmpty()
          Used by master thread to verify that there are results available from take() without possibly having to block and wait.
 boolean isExpecting()
          Check if any results are expected.
 void put(org.springframework.batch.repeat.support.ResultHolder holder)
          Once it is expecting a result, clients call this method to satisfy the expectation.
 org.springframework.batch.repeat.support.ResultHolder take()
          Get the next result as soon as it becomes available.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ResultHolderResultQueue

public ResultHolderResultQueue(int throttleLimit)
Parameters:
throttleLimit - the maximum number of results that can be expected at any given time.
Method Detail

isEmpty

public boolean isEmpty()
Used by master thread to verify that there are results available from take() without possibly having to block and wait.

Returns:
true if there are no results available

isExpecting

public boolean isExpecting()
Check if any results are expected. Usually used by master thread to drain queue when it is finished.

Returns:
true if more results are expected, but possibly not yet available.

expect

public void expect()
            throws InterruptedException
Tell the queue to expect one more result. Blocks until a new result is available if already expecting too many (as determined by the throttle limit).

Throws:
InterruptedException - if the call blocks and is then interrupted.
See Also:
ResultQueue.expect()

put

public void put(org.springframework.batch.repeat.support.ResultHolder holder)
         throws IllegalArgumentException
Once it is expecting a result, clients call this method to satisfy the expectation. In a master-worker pattern, the workers call this method to deposit the result of a finished task on the queue for collection.

Parameters:
holder - the result for later collection.
Throws:
IllegalArgumentException - if the queue is not expecting a new result

take

public org.springframework.batch.repeat.support.ResultHolder take()
                                                           throws NoSuchElementException,
                                                                  InterruptedException
Get the next result as soon as it becomes available.

Release result immediately if: Otherwise block if either: Error if either:

Returns:
a result previously deposited
Throws:
NoSuchElementException - if there is no result expected
InterruptedException - if the operation is interrupted while waiting
See Also:
ResultQueue.take()


Copyright © 2013 SpringSource. All Rights Reserved.