javax.realtime.util
Class ThreadedExecutor

java.lang.Object
  extended byjavax.realtime.util.ThreadedExecutor
All Implemented Interfaces:
Executor, Runnable, Schedulable

public abstract class ThreadedExecutor
extends Object
implements Executor

This class provides a concrete implementation of Executor that spawn a thread each time it has to execute.

Author:
Angelo Corsaro

Field Summary
protected  ProcessingGroupParameters groupParam
           
protected  MemoryArea memoryArea
           
protected  MemoryParameters memoryParam
           
protected  boolean noHeap
           
protected  ReleaseParameters releaseParam
           
protected  Scheduler scheduler
           
protected  SchedulingParameters schedulingParam
           
 
Constructor Summary
ThreadedExecutor()
           
ThreadedExecutor(SchedulingParameters schedulingParam, ReleaseParameters releaseParam, MemoryParameters memoryParam, MemoryArea memoryArea, ProcessingGroupParameters groupParam, boolean noHeap)
           
 
Method Summary
 boolean addIfFeasible()
          Add to the feasibility of the already set scheduler if the resulting feasibility set is schedulable.
 boolean addToFeasibility()
          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.
 void execute(Runnable logic)
          Executes the given logic.
 MemoryParameters getMemoryParameters()
          Get the MemoryParameters of this schedulable object.
 ProcessingGroupParameters getProcessingGroupParameters()
          Get the ProcessingGroupParameters of this schedulable object.
 ReleaseParameters getReleaseParameters()
          Get the ReleaseParameters of this schedulable object.
 Scheduler getScheduler()
          Get the Scheduler for this schedulable object.
 SchedulingParameters getSchedulingParameters()
          Get the SchedulingParameters for this schedulable object.
 boolean removeFromFeasibility()
          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.
 void setMemoryParameters(MemoryParameters memoryParam)
          Set the MemoryParameters for this schedulable object.
 boolean setMemoryParametersIfFeasible(MemoryParameters memoryParam)
          Returns true if, after considering the value of the parameter, the task set would still be feasible.
 void setProcessingGroupParameters(ProcessingGroupParameters groupParam)
          Set the ProcessingGroupParameters for this schedulable object.
 boolean setProcessingGroupParametersIfFeasible(ProcessingGroupParameters groupParam)
          Set the ProcessingGroupParameters of this schedulable object only if the resulting task set is feasible.
 void setReleaseParameters(ReleaseParameters releaseParam)
          Set the ReleaseParametersfor this schedulable object.
 boolean setReleaseParametersIfFeasible(ReleaseParameters releaseParam)
          Returns true if, after considering the value of the parameter, the task set would still be feasible.
 void setScheduler(Scheduler scheduler)
          Set the Scheduler for this schedulable object.
 void setScheduler(Scheduler scheduler, SchedulingParameters schedulingParam, ReleaseParameters releaseParam, MemoryParameters memoryParam, ProcessingGroupParameters groupParam)
          Set the Scheduler for this schedulable object.
 void setSchedulingParameters(SchedulingParameters schedulingParam)
          Set the SchedulingParameters for this schedulable object only if the resulting task set is feasible.
 boolean setSchedulingParametersIfFeasible(SchedulingParameters schedulingParam)
          Set the SchedulingParameters for this schedulable object.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface javax.realtime.util.Executor
shutdown
 
Methods inherited from interface javax.realtime.Schedulable
executionEligibility
 
Methods inherited from interface java.lang.Runnable
run
 

Field Detail

memoryParam

protected MemoryParameters memoryParam

releaseParam

protected ReleaseParameters releaseParam

schedulingParam

protected SchedulingParameters schedulingParam

memoryArea

protected MemoryArea memoryArea

groupParam

protected ProcessingGroupParameters groupParam

scheduler

protected Scheduler scheduler

noHeap

protected boolean noHeap
Constructor Detail

ThreadedExecutor

public ThreadedExecutor()

ThreadedExecutor

public ThreadedExecutor(SchedulingParameters schedulingParam,
                        ReleaseParameters releaseParam,
                        MemoryParameters memoryParam,
                        MemoryArea memoryArea,
                        ProcessingGroupParameters groupParam,
                        boolean noHeap)
Method Detail

execute

public void execute(Runnable logic)
Description copied from interface: Executor
Executes the given logic. If the logic is executed on a newly created thread, or of a thread is borrowed from a pool is implementation dependent.

Specified by:
execute in interface Executor
Parameters:
logic - a Runnable value

addIfFeasible

public boolean addIfFeasible()
Add to the feasibility of the already set scheduler if the resulting feasibility set is schedulable. If successful return true, if not return false. If there is not an assigned scheduler it will return false.

Specified by:
addIfFeasible in interface Schedulable
Returns:
If successful return true, if not return false. If there is not an assigned scheduler it will return false.

addToFeasibility

public boolean addToFeasibility()
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.

Specified by:
addToFeasibility in interface Schedulable
Returns:
true If the resulting system is feasible.

getMemoryParameters

public MemoryParameters getMemoryParameters()
Get the MemoryParameters of this schedulable object.

Specified by:
getMemoryParameters in interface Schedulable
Returns:
a MemoryParameters value.

setMemoryParameters

public void setMemoryParameters(MemoryParameters memoryParam)
Set the MemoryParameters for this schedulable object.

Specified by:
setMemoryParameters in interface Schedulable
Parameters:
memoryParam - the MemoryParameters for this schedulable object.

setMemoryParametersIfFeasible

public boolean setMemoryParametersIfFeasible(MemoryParameters memoryParam)
Returns true if, after considering the value of the parameter, the task set would still be feasible. In this case the values of the parameters are changed. Returns false if, after considering the value of the parameter, the task set would not be feasible. In this case the values of the parameters are not changed.

Specified by:
setMemoryParametersIfFeasible in interface Schedulable
Parameters:
memoryParam - the MemoryParameters for this schedulable object.
Returns:
true if the requested change keeps the system feasible.

getProcessingGroupParameters

public ProcessingGroupParameters getProcessingGroupParameters()
Get the ProcessingGroupParameters of this schedulable object.

Specified by:
getProcessingGroupParameters in interface Schedulable
Returns:
a ProcessingGroupParameters value

setProcessingGroupParameters

public void setProcessingGroupParameters(ProcessingGroupParameters groupParam)
Set the ProcessingGroupParameters for this schedulable object.

Specified by:
setProcessingGroupParameters in interface Schedulable
Parameters:
groupParam - a ProcessingGroupParameters value

setProcessingGroupParametersIfFeasible

public boolean setProcessingGroupParametersIfFeasible(ProcessingGroupParameters groupParam)
Set the ProcessingGroupParameters of this schedulable object only if the resulting task set is feasible.

Specified by:
setProcessingGroupParametersIfFeasible in interface Schedulable
Parameters:
groupParam - a ProcessingGroupParameters value
Returns:
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.

getReleaseParameters

public ReleaseParameters getReleaseParameters()
Get the ReleaseParameters of this schedulable object.

Specified by:
getReleaseParameters in interface Schedulable
Returns:
a ReleaseParameters value

setReleaseParameters

public void setReleaseParameters(ReleaseParameters releaseParam)
Set the ReleaseParametersfor this schedulable object.

Specified by:
setReleaseParameters in interface Schedulable
Parameters:
releaseParam - a ReleaseParameters value

setReleaseParametersIfFeasible

public boolean setReleaseParametersIfFeasible(ReleaseParameters releaseParam)
Returns true if, after considering the value of the parameter, the task set would still be feasible. In this case the values of the parameters are changed. Returns false if, after considering the value of the parameter, the task set would not be feasible. In this case the values of the parameters are not changed. the resulting task set is feasible.

Specified by:
setReleaseParametersIfFeasible in interface Schedulable
Parameters:
releaseParam - a ReleaseParameters value

getScheduler

public Scheduler getScheduler()
Get the Scheduler for this schedulable object.

Specified by:
getScheduler in interface Schedulable
Returns:
a Scheduler value

setScheduler

public void setScheduler(Scheduler scheduler)
                  throws IllegalThreadStateException
Set the Scheduler for this schedulable object.

Specified by:
setScheduler in interface Schedulable
Parameters:
scheduler - the scheduler.
Throws:
IllegalThreadStateException

setScheduler

public void setScheduler(Scheduler scheduler,
                         SchedulingParameters schedulingParam,
                         ReleaseParameters releaseParam,
                         MemoryParameters memoryParam,
                         ProcessingGroupParameters groupParam)
                  throws IllegalThreadStateException
Set the Scheduler for this schedulable object.

Specified by:
setScheduler in interface Schedulable
Parameters:
scheduler - a Scheduler value
schedulingParam - a SchedulingParameters value
releaseParam - a ReleaseParameters value
memoryParam - a MemoryParameters value
groupParam - a ProcessingGroupParameters value
Throws:
IllegalThreadStateException - if an error occurs

getSchedulingParameters

public SchedulingParameters getSchedulingParameters()
Get the SchedulingParameters for this schedulable object.

Specified by:
getSchedulingParameters in interface Schedulable
Returns:
a SchedulingParameters value

setSchedulingParameters

public void setSchedulingParameters(SchedulingParameters schedulingParam)
Set the SchedulingParameters for this schedulable object only if the resulting task set is feasible.

Specified by:
setSchedulingParameters in interface Schedulable
Parameters:
schedulingParam - a SchedulingParameters value

setSchedulingParametersIfFeasible

public boolean setSchedulingParametersIfFeasible(SchedulingParameters schedulingParam)
Set the SchedulingParameters for this schedulable object.

Specified by:
setSchedulingParametersIfFeasible in interface Schedulable
Parameters:
schedulingParam - a SchedulingParameters value
Returns:
true if the change was feasible, false otherwise.

removeFromFeasibility

public boolean removeFromFeasibility()
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 subtrac-tion is completed.

Specified by:
removeFromFeasibility in interface Schedulable
Returns:
true If the resulting system is feasible.


jRate is developed and maintained by the jRate project development team.
Copyright (c) 2001-2005 Angelo Corsaro and Morgan Deters.