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:
  • Constructor Details

    • ControlledWorkerScheduler

      @Deprecated(forRemoval=true) public ControlledWorkerScheduler()
      Deprecated, for removal: This API element is subject to removal in a future version.
      use ControlledWorkerScheduler(int, String). Scheduled to be removed in 4.0
      Construct 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 Details

    • schedule

      public void schedule(ParallelTask<T> task)
      Schedule the specified parallel task.
      Specified by:
      schedule in interface Scheduler<T>
      Parameters:
      task - the task to schedule
    • 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.
      Specified by:
      abort in interface Scheduler<T>
    • done

      public void done()
      Description copied from interface: Scheduler
      Inform the scheduler that a certain task is done.
      Specified by:
      done in interface Scheduler<T>
    • handleResult

      public void handleResult(CloseableIteration<T,QueryEvaluationException> res)
      Description copied from interface: Scheduler
      Callback to handle the result.
      Specified by:
      handleResult in interface Scheduler<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 interface Scheduler<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.
      Specified by:
      isRunning in interface Scheduler<T>
      Returns:
      whether the scheduler is running
    • 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.
      Specified by:
      toss in interface Scheduler<T>
      Parameters:
      e -
    • shutdown

      public void shutdown()
      Specified by:
      shutdown in interface Scheduler<T>
    • setTaskWrapper

      public void setTaskWrapper(TaskWrapper taskWrapper)
      Description copied from interface: TaskWrapperAware
      Set the TaskWrapper to the respective instance
      Specified by:
      setTaskWrapper in interface TaskWrapperAware
      Parameters:
      taskWrapper -