javax.realtime
Class Scheduler

java.lang.Object
  |
  +--javax.realtime.Scheduler
Direct Known Subclasses:
PriorityScheduler

public abstract class Scheduler
extends java.lang.Object

An instance of Scheduler manages the execution of schedulable objects and may implement a feasibility algorithm. The feasibility algorithm may determine if the known set of schedulable objects, given their particular execution ordering (or priority assignment), is a feasible schedule. Subclasses of Scheduler are used for alternative scheduling policies and should define an instance() class method to return the default instance of the subclass. The name of the subclass should be descriptive of the policy, allowing applications to deduce the policy available for the scheduler obtained via getDefaultScheduler() (e.g., EDFScheduler).


Constructor Summary
protected Scheduler()
          Constructor.
 
Method Summary
protected abstract  boolean addToFeasibility(Schedulable schedulable)
          Inform the scheduler and cooperating facilities that the resource demands (as expressed in the associated instances of SchedulingParameters, ReleaseParameters, MemoryParameters, and ProcessingGroupParameters) of this instance of Schedulable will be considered in the feasibility analysis of the associated Scheduler until further notice.
abstract  void fireSchedulable(Schedulable schedulable)
          Trigger the execution of a schedulable object (like an AsyncEventHandler).
static Scheduler getDefaultScheduler()
          Return a reference to the default scheduler.
abstract  java.lang.String getPolicyName()
          Used to determine the policy of the Scheduler.
abstract  boolean isFeasible()
          Returns true if and only if the system is able to satisfy the constraints expressed in the release parameters of the existing schedulable objects.
protected abstract  boolean removeFromFeasibility(Schedulable schedulable)
          Inform the scheduler and cooperating facilities that the resource demands, as expressed in the associated instances of SchedulingParameters, ReleaseParameters, MemoryParameters, and ProcessingGroupParameters, of this instance of Schedulable should no longer be considered in the feasibility analysis of the associated Scheduler.
static void setDefaultScheduler(Scheduler scheduler)
          Set the default scheduler.
 boolean setIfFeasible(Schedulable schedulable, ReleaseParameters release, MemoryParameters memory)
          Returns true if, after considering the values of the parameters, the task set would still be feasible.
 boolean setIfFeasible(Schedulable schedulable, ReleaseParameters release, MemoryParameters memory, ProcessingGroupParameters group)
          Returns true if, after considering the values of the parameters, the task set would still be feasible.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Scheduler

protected Scheduler()
Constructor.
Method Detail

addToFeasibility

protected abstract boolean addToFeasibility(Schedulable schedulable)
Inform the scheduler and cooperating facilities that the resource demands (as expressed in the associated instances of SchedulingParameters, ReleaseParameters, MemoryParameters, and ProcessingGroupParameters) of this instance of Schedulable will be considered in the feasibility analysis of the associated Scheduler until further notice. Whether the resulting system is feasible or not, the addition is completed.
Returns:
true If the resulting system is feasible.

setIfFeasible

public boolean setIfFeasible(Schedulable schedulable,
                             ReleaseParameters release,
                             MemoryParameters memory)
Returns true if, after considering the values of the parameters, the task set would still be feasible. In this case the values of the parameters are changed. Returns false if, after considering the values of the parameters, the task set would not be feasible. In this case the values of the parameters are not changed.

setIfFeasible

public boolean setIfFeasible(Schedulable schedulable,
                             ReleaseParameters release,
                             MemoryParameters memory,
                             ProcessingGroupParameters group)
Returns true if, after considering the values of the parameters, the task set would still be feasible. In this case the values of the parameters are changed. Returns false if, after considering the values of the parameters, the task set would not be feasible. In this case the values of the parameters are not changed.

getDefaultScheduler

public static Scheduler getDefaultScheduler()
Return a reference to the default scheduler.

getPolicyName

public abstract java.lang.String getPolicyName()
Used to determine the policy of the Scheduler.
Returns:
A String object which is the name of the scheduling policy used by this.

isFeasible

public abstract boolean isFeasible()
Returns true if and only if the system is able to satisfy the constraints expressed in the release parameters of the existing schedulable objects.

removeFromFeasibility

protected abstract boolean removeFromFeasibility(Schedulable schedulable)
Inform the scheduler and cooperating facilities that the resource demands, as expressed in the associated instances of SchedulingParameters, ReleaseParameters, MemoryParameters, and ProcessingGroupParameters, of this instance of Schedulable should no longer be considered in the feasibility analysis of the associated Scheduler. Whether the resulting system is feasible or not, the subtraction is completed.
Returns:
true If the resulting system is feasible.

setDefaultScheduler

public static void setDefaultScheduler(Scheduler scheduler)
Set the default scheduler. This is the scheduler given to instances of RealtimeThread when they are constructed. The default scheduler is set to the required PriorityScheduler at startup.
Parameters:
scheduler - The Scheduler that becomes the default scheduler assigned to new threads. If null nothing happens.

fireSchedulable

public abstract void fireSchedulable(Schedulable schedulable)
Trigger the execution of a schedulable object (like an AsyncEventHandler).
Parameters:
schedulable - The schedulable object to make active.