Class ControlledWorkerUnion<T>
java.lang.Object
org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration<T>
org.eclipse.rdf4j.common.iteration.LookAheadIteration<T>
org.eclipse.rdf4j.federated.evaluation.concurrent.ParallelExecutorBase<T>
org.eclipse.rdf4j.federated.evaluation.union.UnionExecutorBase<T>
org.eclipse.rdf4j.federated.evaluation.union.WorkerUnionBase<T>
org.eclipse.rdf4j.federated.evaluation.union.ControlledWorkerUnion<T>
- All Implemented Interfaces:
AutoCloseable
,Runnable
,Iterator<T>
,CloseableIteration<T>
,ParallelExecutor<T>
Execution of union tasks with
ControlledWorkerScheduler
. Tasks can be added using the provided functions.
Note that the union operation is to be executed with the ParallelExecutorBase.run()
method (also threaded execution is possible).
Results are then contained in this iteration.- Author:
- Andreas Schwarte
-
Field Summary
Modifier and TypeFieldDescriptionstatic int
protected final Phaser
protected final ControlledWorkerScheduler
<T> static int
Fields inherited from class org.eclipse.rdf4j.federated.evaluation.union.WorkerUnionBase
tasks
Fields inherited from class org.eclipse.rdf4j.federated.evaluation.concurrent.ParallelExecutorBase
evaluationThread, executorId, finished, log, NEXT_EXECUTOR_ID, queryInfo, rightIter, rightQueue, strategy
-
Constructor Summary
ConstructorDescriptionControlledWorkerUnion
(ControlledWorkerScheduler<T> scheduler, QueryInfo queryInfo) -
Method Summary
Modifier and TypeMethodDescriptionvoid
done()
Inform the controlling instance that some job is done from a different thread.void
Called byAbstractCloseableIteration.close()
when it is called for the first time.void
Toss some exception to the controlling instanceprotected void
union()
Note: this method must block until the union is executed completely.Methods inherited from class org.eclipse.rdf4j.federated.evaluation.union.WorkerUnionBase
addTask
Methods inherited from class org.eclipse.rdf4j.federated.evaluation.union.UnionExecutorBase
getExecutorType, performExecution
Methods inherited from class org.eclipse.rdf4j.federated.evaluation.concurrent.ParallelExecutorBase
addResult, checkTimeout, getDisplayId, getId, getNextElement, getQueryInfo, isFinished, run, toString
Methods inherited from class org.eclipse.rdf4j.common.iteration.LookAheadIteration
hasNext, next, remove
Methods inherited from class org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration
close, isClosed
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.eclipse.rdf4j.common.iteration.CloseableIteration
stream
Methods inherited from interface java.util.Iterator
forEachRemaining
-
Field Details
-
waitingCount
public static int waitingCount -
awakeCount
public static int awakeCount -
scheduler
-
phaser
-
-
Constructor Details
-
ControlledWorkerUnion
-
-
Method Details
-
union
Description copied from class:UnionExecutorBase
Note: this method must block until the union is executed completely. Otherwise the result queue is marked as committed while this isn't the case. The blocking behavior in general is no problem: If you need concurrent access to the result (i.e. pipelining) just run the union in a separate thread. Access to the result iteration is synchronized.- Specified by:
union
in classUnionExecutorBase<T>
- Throws:
Exception
-
done
public void done()Description copied from interface:ParallelExecutor
Inform the controlling instance that some job is done from a different thread. In most cases this is a no-op.- Specified by:
done
in interfaceParallelExecutor<T>
- Overrides:
done
in classParallelExecutorBase<T>
-
toss
Description copied from interface:ParallelExecutor
Toss some exception to the controlling instance- Specified by:
toss
in interfaceParallelExecutor<T>
- Overrides:
toss
in classParallelExecutorBase<T>
- Parameters:
e
-
-
handleClose
Description copied from class:AbstractCloseableIteration
Called byAbstractCloseableIteration.close()
when it is called for the first time. This method is only called once on each iteration. By default, this method does nothing.- Overrides:
handleClose
in classWorkerUnionBase<T>
- Throws:
QueryEvaluationException
-