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 class
ControlledWorkerScheduler.ControlStatus
Structure 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 void
abort()
Abort the execution of running and queued tasks.void
done()
Inform the scheduler that a certain task is done.int
getNumberOfTasks()
int
getTotalNumberOfWorkers()
void
handleResult(CloseableIteration<T,QueryEvaluationException> res)
Callback to handle the result.void
informFinish()
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
isRunning()
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(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: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
public void handleResult(CloseableIteration<T,QueryEvaluationException> res)
Description copied from interface:Scheduler
Callback to handle the result.- Specified by:
handleResult
in interfaceScheduler<T>
-
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
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:Scheduler
Determine 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:Scheduler
Toss an exception to the scheduler.
-
setTaskWrapper
public void setTaskWrapper(TaskWrapper taskWrapper)
Description copied from interface:TaskWrapperAware
Set theTaskWrapper
to the respective instance- Specified by:
setTaskWrapper
in interfaceTaskWrapperAware
-
-