Class ControlledWorkerScheduler<T>
java.lang.Object
org.eclipse.rdf4j.federated.evaluation.concurrent.ControlledWorkerScheduler<T>
- All Implemented Interfaces:
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:
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected class
Structure to maintain the status for a given control instance. -
Constructor Summary
ConstructorDescriptionControlledWorkerScheduler
(int nWorkers, String name) Construct a new instance with the specified number of workers and the given name. -
Method Summary
Modifier and TypeMethodDescriptionvoid
abort()
Abort the execution of running and queued tasks.void
done()
Inform the scheduler that a certain task is done.int
int
void
handleResult
(CloseableIteration<T> res) Callback to handle the result.void
Inform the scheduler that no more tasks will be scheduled.void
informFinish
(ParallelExecutor<T> control) Inform this scheduler that the specified control instance will no longer submit tasks.boolean
Determine if the scheduler has unfinished tasks.boolean
isRunning
(ParallelExecutor<T> control) Determine if there are still task running or queued for the specified control.void
schedule
(ParallelTask<T> task) Schedule the specified parallel task.void
scheduleAll
(List<ParallelTask<T>> tasks, ParallelExecutor<T> control) Schedule the given tasks and inform about finish using the same lock, i.e.void
setTaskWrapper
(TaskWrapper taskWrapper) Set theTaskWrapper
to the respective instancevoid
shutdown()
void
Toss an exception to the scheduler.
-
Constructor Details
-
ControlledWorkerScheduler
Construct a new instance with the specified number of workers and the given name.- Parameters:
nWorkers
-name
-
-
-
Method Details
-
schedule
Schedule the specified parallel task. -
scheduleAll
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:Scheduler
Abort the execution of running and queued tasks. -
done
public void done()Description copied from interface:Scheduler
Inform the scheduler that a certain task is done. -
handleResult
Description copied from interface:Scheduler
Callback to handle the result.- Specified by:
handleResult
in interfaceScheduler<T>
- Parameters:
res
-
-
informFinish
public void informFinish()Description copied from interface:Scheduler
Inform the scheduler that no more tasks will be scheduled.- Specified by:
informFinish
in interfaceScheduler<T>
-
informFinish
Inform this scheduler that the specified control instance will no longer submit tasks.- Parameters:
control
-
-
isRunning
public boolean isRunning()Description copied from interface:Scheduler
Determine if the scheduler has unfinished tasks. -
isRunning
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
Description copied from interface:Scheduler
Toss an exception to the scheduler. -
shutdown
public void shutdown() -
setTaskWrapper
Description copied from interface:TaskWrapperAware
Set theTaskWrapper
to the respective instance- Specified by:
setTaskWrapper
in interfaceTaskWrapperAware
- Parameters:
taskWrapper
-
-