|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectbiz.hammurapi.rules.backwardreasoning.Accumulator
public class Accumulator
Accumulates objects. Allows multiple producers concurrently add objects and multiple consumers iterate over objects. Iterators block until next item is available or all producers are done with producing objects. Addition of nulls is not allowed. In some situations last value returned by iterator can be null. Consumers shall check value returned by iterator for null and discard it.
Nested Class Summary | |
---|---|
static interface |
Accumulator.AccumulatorIterator
|
protected static interface |
Accumulator.Link
|
protected class |
Accumulator.LinkImpl
|
Field Summary | |
---|---|
protected Accumulator.Link |
current
|
protected Accumulator.Link |
END
|
protected Accumulator.LinkImpl |
first
This link |
Constructor Summary | |
---|---|
Accumulator(java.lang.Class type)
Only elements of specified type can be added to accumulator. |
Method Summary | |
---|---|
void |
add(java.lang.Object obj)
Adds object, unblocks waiting iterators. |
void |
addProducer(java.lang.Object producer)
Indicates that one more produces was added to the accumulator. |
java.util.Iterator |
blockingIterator()
Returned iterator iterates over available elements and blocks waiting for more elements from producers or for all producers to finish. |
void |
close(java.lang.Object producer)
Invocation of this method indicates that no more elements will be added to accumulator. |
Accumulator.AccumulatorIterator |
iterator()
Returned iterator iterates over available elements. |
protected void |
onBlock()
This method is invoked before iterator enters blocked state. |
java.lang.String |
toString()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected final Accumulator.Link END
protected final Accumulator.LinkImpl first
protected Accumulator.Link current
Constructor Detail |
---|
public Accumulator(java.lang.Class type)
type
- Method Detail |
---|
public void addProducer(java.lang.Object producer)
public java.lang.String toString()
toString
in class java.lang.Object
public java.util.Iterator blockingIterator()
public Accumulator.AccumulatorIterator iterator()
public void add(java.lang.Object obj)
obj
- public void close(java.lang.Object producer)
protected void onBlock()
it
-
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |