|
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--java.lang.Thread | +--javax.realtime.RealtimeThread | +--javax.realtime.NoHeapRealtimeThread
A NoHeapRealtimeThread
is a specialized form of RealtimeThread
.
Because an instance of NoHeapRealtimeThread
may immediately preempt any
implemented garbage collector logic contained in its run()
is never allowed to allocate or reference any object allocated in the heap nor
it is even allowed to manipulate the references to objects in the heap.
For example, if a and b are objects in immortal memory, b.p is reference to an object
on the heap, and a.p is type compatible with b.p, then
a NoHeapRealtimeThread
is not allowed to execute anyting like the following:
a.p = b.p;
b.p = null;
Thus, it is always safe for a NoHeapRealtimeThread
to interrupt the garbage
collector at any time, without waiting for the end of the garbage collection
cycle or a defined preemption point. Due to these restrictions,
a NoHeapRealtimeThread
object must be placed in a memory area such that
thread logic may unexceptionally access instance variables and such that
Java methods on Thread
(e.g., enumerate and join) complete normally
except where execution would cause access violations.
(Implementation hint: They could be allocated in ImmortalMemory
.)
The constructors of NoHeapRealtimeThread
require a reference to ScopedMemory
or ImmortalMemory
.
When the thread is started, all
execution occurs in the scope of the given memory area.
Thus, all memory allocation performed with the "new" operator is taken
from this given area.
Fields inherited from class java.lang.Thread |
MAX_PRIORITY,
MIN_PRIORITY,
NORM_PRIORITY |
Constructor Summary | |
NoHeapRealtimeThread(SchedulingParameters sp,
MemoryArea ma)
Create a NoHeapRealtimeThread . |
|
NoHeapRealtimeThread(SchedulingParameters sp,
ReleaseParameters rp,
MemoryArea ma)
Create a NoHeapRealtimeThread . |
|
NoHeapRealtimeThread(SchedulingParameters sp,
ReleaseParameters rp,
MemoryParameters mp,
MemoryArea ma,
ProcessingGroupParameters group,
java.lang.Runnable logic)
Create a NoHeapRealtimeThread . |
Method Summary | |
void |
start()
Checks if the NoHeapRealtimeThread is startable and starts it if it is. |
Methods inherited from class java.lang.Thread |
activeCount,
checkAccess,
countStackFrames,
currentThread,
destroy,
dumpStack,
enumerate,
getContextClassLoader,
getName,
getPriority,
getThreadGroup,
interrupted,
isAlive,
isDaemon,
isInterrupted,
join,
join,
join,
resume,
run,
setContextClassLoader,
setDaemon,
setName,
setPriority,
sleep,
sleep,
stop,
stop,
suspend,
toString,
yield |
Methods inherited from class java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
wait,
wait,
wait |
Constructor Detail |
public NoHeapRealtimeThread(SchedulingParameters sp, MemoryArea ma) throws java.lang.IllegalArgumentException
NoHeapRealtimeThread
.scheduling
- A SchedulingParameters
object that will
be associated with this. A null value means this will not
have an associated SchedulingParameters
object.area
- A MemoryArea
object. Must be a ScopedMemory
or ImmortalMemory
type.
A null value causes an IllegalArgumentException
to be thrown.public NoHeapRealtimeThread(SchedulingParameters sp, ReleaseParameters rp, MemoryArea ma) throws java.lang.IllegalArgumentException
NoHeapRealtimeThread
.scheduling
- A SchedulingParameters
object that will
be associated with this. A null value means this will not
have an associated SchedulingParameters
object.release
- A ReleaseParameters
object that will be associated
with this. A null value means this will not
have an associated ReleaseParameters
object.area
- A MemoryArea
object. Must be a ScopedMemory
or ImmortalMemory
type.
A null value causes an IllegalArgumentException
to be thrown.public NoHeapRealtimeThread(SchedulingParameters sp, ReleaseParameters rp, MemoryParameters mp, MemoryArea ma, ProcessingGroupParameters group, java.lang.Runnable logic) throws java.lang.IllegalArgumentException
NoHeapRealtimeThread
.scheduling
- A SchedulingParameters
object that will
be associated with this. A null value means this will not
have an associated SchedulingParameters
object.release
- A ReleaseParameters
object that will
be associated with this. A null value means this will not
have an associated ReleaseParameters
object.memory
- A MemoryParameters
object that will be associated
with this. A null value means this will not
have a MemoryParameters
object.area
- A MemoryArea
object. Must be a ScopedMemory
or ImmortalMemory
type.
A null value causes an IllegalArgumentException
to be thrown.group
- A ProcessingGroupParameters
object
that will be associated with this. A null value means
this will not have an associated ProcessingGroupParameters
object.logic
- A Runnable whose run()
method will be executed for this.Method Detail |
public void start()
this
object is allocated in heap. If any of them
are allocated, start()
throws a MemoryAccessError
this
is allocated on heap.
|
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |