Class ControlledWorkerScheduler<T>
- java.lang.Object
-
- org.eclipse.rdf4j.federated.evaluation.concurrent.ControlledWorkerScheduler<T>
-
- All Implemented Interfaces:
Scheduler<T>,TaskWrapperAware
public class ControlledWorkerScheduler<T> extends Object implements Scheduler<T>, TaskWrapperAware
ControlledWorkerScheduler is a task scheduler that uses a FIFO queue for managing its process. Each instance has a pool with a fixed number of worker threads. Once notified a worker picks the next task from the queue and executes it. The results is then returned to the controlling instance retrieved from the task.- Author:
- Andreas Schwarte
- See Also:
ControlledWorkerUnion,ControlledWorkerJoin,ControlledWorkerBoundJoin
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classControlledWorkerScheduler.ControlStatusStructure to maintain the status for a given control instance.
-
Constructor Summary
Constructors Constructor Description ControlledWorkerScheduler()Deprecated, for removal: This API element is subject to removal in a future version.ControlledWorkerScheduler(int nWorkers, String name)Construct a new instance with the specified number of workers and the given name.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidabort()Abort the execution of running and queued tasks.voiddone()Inform the scheduler that a certain task is done.intgetNumberOfTasks()intgetTotalNumberOfWorkers()voidhandleResult(CloseableIteration<T,QueryEvaluationException> res)Callback to handle the result.voidinformFinish()Inform the scheduler that no more tasks will be scheduled.voidinformFinish(ParallelExecutor<T> control)Inform this scheduler that the specified control instance will no longer submit tasks.booleanisRunning()Determine if the scheduler has unfinished tasks.booleanisRunning(ParallelExecutor<T> control)Determine if there are still task running or queued for the specified control.voidschedule(ParallelTask<T> task)Schedule the specified parallel task.voidscheduleAll(List<ParallelTask<T>> tasks, ParallelExecutor<T> control)Schedule the given tasks and inform about finish using the same lock, i.e.voidsetTaskWrapper(TaskWrapper taskWrapper)Set theTaskWrapperto the respective instancevoidshutdown()voidtoss(Exception e)Toss an exception to the scheduler.
-
-
-
Constructor Detail
-
ControlledWorkerScheduler
@Deprecated(forRemoval=true) public ControlledWorkerScheduler()
Deprecated, for removal: This API element is subject to removal in a future version.useControlledWorkerScheduler(int, String). Scheduled to be removed in 4.0Construct a new instance with 20 workers.
-
ControlledWorkerScheduler
public ControlledWorkerScheduler(int nWorkers, String name)Construct a new instance with the specified number of workers and the given name.- Parameters:
nWorkers-name-
-
-
Method Detail
-
schedule
public void schedule(ParallelTask<T> task)
Schedule the specified parallel task.
-
scheduleAll
public void scheduleAll(List<ParallelTask<T>> tasks, ParallelExecutor<T> control)
Schedule the given tasks and inform about finish using the same lock, i.e. all tasks are scheduled one after the other.- Parameters:
tasks-control-
-
getTotalNumberOfWorkers
public int getTotalNumberOfWorkers()
-
getNumberOfTasks
public int getNumberOfTasks()
-
abort
public void abort()
Description copied from interface:SchedulerAbort the execution of running and queued tasks.
-
done
public void done()
Description copied from interface:SchedulerInform the scheduler that a certain task is done.
-
handleResult
public void handleResult(CloseableIteration<T,QueryEvaluationException> res)
Description copied from interface:SchedulerCallback to handle the result.- Specified by:
handleResultin interfaceScheduler<T>
-
informFinish
public void informFinish()
Description copied from interface:SchedulerInform the scheduler that no more tasks will be scheduled.- Specified by:
informFinishin interfaceScheduler<T>
-
informFinish
public void informFinish(ParallelExecutor<T> control)
Inform this scheduler that the specified control instance will no longer submit tasks.- Parameters:
control-
-
isRunning
public boolean isRunning()
Description copied from interface:SchedulerDetermine if the scheduler has unfinished tasks.
-
isRunning
public boolean isRunning(ParallelExecutor<T> control)
Determine if there are still task running or queued for the specified control.- Parameters:
control-- Returns:
- true, if there are unfinished tasks, false otherwise
-
toss
public void toss(Exception e)
Description copied from interface:SchedulerToss an exception to the scheduler.
-
setTaskWrapper
public void setTaskWrapper(TaskWrapper taskWrapper)
Description copied from interface:TaskWrapperAwareSet theTaskWrapperto the respective instance- Specified by:
setTaskWrapperin interfaceTaskWrapperAware
-
-