BitstreamDispatchers are strategy objects that hand bitstream ids out to workers. Implementations must be threadsafe.
The rationale behind the use of the Sentinel pattern (rather than the more traditional iterator pattern or a cursor c.f. java.sql.ResultSet): -
- To make it easy to make implementations thread safe - multithreaded invocation of the dispatchers is seen as a next step use case. In simple terms, this requires that a single method does all the work.
- Shouldn't an exception as the sentinel, as reaching the end of a loop is not an exceptional condition.
@author Jim Downing
@author Grace Carpenter
@author Nathan Sarr