Class ControlledWorkerUnion<T>
java.lang.Object
org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration<E>
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
FieldsModifier and TypeFieldDescriptionstatic intprotected final Phaserprotected final ControlledWorkerScheduler<T>static intFields inherited from class org.eclipse.rdf4j.federated.evaluation.union.WorkerUnionBase
tasksFields inherited from class org.eclipse.rdf4j.federated.evaluation.concurrent.ParallelExecutorBase
evaluationThread, executorId, finished, log, NEXT_EXECUTOR_ID, queryInfo, rightIter, rightQueue, strategy -
Constructor Summary
ConstructorsConstructorDescriptionControlledWorkerUnion(ControlledWorkerScheduler<T> scheduler, QueryInfo queryInfo) -
Method Summary
Modifier and TypeMethodDescriptionvoiddone()Inform the controlling instance that some job is done from a different thread.voidCalled byAbstractCloseableIteration.close()when it is called for the first time.voidToss some exception to the controlling instanceprotected voidunion()Note: this method must block until the union is executed completely.Methods inherited from class org.eclipse.rdf4j.federated.evaluation.union.WorkerUnionBase
addTaskMethods inherited from class org.eclipse.rdf4j.federated.evaluation.union.UnionExecutorBase
getExecutorType, performExecutionMethods inherited from class org.eclipse.rdf4j.federated.evaluation.concurrent.ParallelExecutorBase
addResult, checkTimeout, getDisplayId, getId, getNextElement, getQueryInfo, isFinished, run, toStringMethods inherited from class org.eclipse.rdf4j.common.iteration.LookAheadIteration
hasNext, next, removeMethods inherited from class org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration
close, isClosedMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.eclipse.rdf4j.common.iteration.CloseableIteration
streamMethods 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:UnionExecutorBaseNote: 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:
unionin classUnionExecutorBase<T>- Throws:
Exception
-
done
public void done()Description copied from interface:ParallelExecutorInform the controlling instance that some job is done from a different thread. In most cases this is a no-op.- Specified by:
donein interfaceParallelExecutor<T>- Overrides:
donein classParallelExecutorBase<T>
-
toss
Description copied from interface:ParallelExecutorToss some exception to the controlling instance- Specified by:
tossin interfaceParallelExecutor<T>- Overrides:
tossin classParallelExecutorBase<T>
-
handleClose
Description copied from class:AbstractCloseableIterationCalled 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:
handleClosein classWorkerUnionBase<T>- Throws:
QueryEvaluationException
-