|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.apache.batik.util.RunnableQueue
This class represents an object which queues Runnable objects for invocation in a single thread.
Inner Class Summary | |
protected static class |
RunnableQueue.Link
To store a Runnable. |
protected static class |
RunnableQueue.LockableLink
To store a Runnable with an object waiting for him to be executed. |
static interface |
RunnableQueue.RunHandler
This interface must be implemented by an object which wants to be notified of run events. |
static class |
RunnableQueue.RunnableQueueState
Type-safe enumeration of queue states. |
Field Summary | |
protected DoublyLinkedList |
list
The Runnable objects list, also used as synchoronization point for pushing/poping runables. |
protected RunnableQueue.RunHandler |
runHandler
The object which handle run events. |
protected java.lang.Thread |
runnableQueueThread
The current thread. |
static RunnableQueue.RunnableQueueState |
RUNNING
The queue is in the processes of running tasks. |
protected RunnableQueue.RunnableQueueState |
state
The Suspension state of this thread. |
protected java.lang.Object |
stateLock
Object to synchronize/wait/notify for suspension issues. |
static RunnableQueue.RunnableQueueState |
SUSPENDED
The queue is no longer running any tasks and will not run any tasks until resumeExecution is called. |
static RunnableQueue.RunnableQueueState |
SUSPENDING
The queue may still be running tasks but as soon as possible will go to SUSPENDED state. |
Constructor Summary | |
RunnableQueue()
|
Method Summary | |
static RunnableQueue |
createRunnableQueue()
Creates a new RunnableQueue started in a new thread. |
protected void |
executionResumed()
Called when execution is being resumed. |
protected void |
executionSuspended()
Called when execution is being suspended. |
java.lang.Object |
getIteratorLock()
Returns iterator lock to use to work with the iterator returned by iterator(). |
RunnableQueue.RunnableQueueState |
getQueueState()
|
RunnableQueue.RunHandler |
getRunHandler()
Returns the RunHandler or null. |
java.lang.Thread |
getThread()
Returns the thread in which the RunnableQueue is currently running. |
void |
invokeAndWait(java.lang.Runnable r)
Waits until the given Runnable's run() has returned. |
void |
invokeLater(java.lang.Runnable r)
Schedules the given Runnable object for a later invocation, and returns. |
java.util.Iterator |
iterator()
Returns an iterator over the runnables. |
void |
preemptAndWait(java.lang.Runnable r)
Waits until the given Runnable's run() has returned. |
void |
preemptLater(java.lang.Runnable r)
Schedules the given Runnable object for a later invocation, and returns. |
void |
resumeExecution()
Resumes the execution of this queue. |
void |
run()
Runs this queue. |
protected void |
runnableInvoked(java.lang.Runnable rable)
Called when a Runnable completes. |
void |
setRunHandler(RunnableQueue.RunHandler rh)
Sets the RunHandler for this queue. |
void |
suspendExecution(boolean waitTillSuspended)
Suspends the execution of this queue after the current runnable completes. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
public static final RunnableQueue.RunnableQueueState RUNNING
public static final RunnableQueue.RunnableQueueState SUSPENDING
public static final RunnableQueue.RunnableQueueState SUSPENDED
protected RunnableQueue.RunnableQueueState state
protected java.lang.Object stateLock
protected DoublyLinkedList list
protected RunnableQueue.RunHandler runHandler
protected java.lang.Thread runnableQueueThread
Constructor Detail |
public RunnableQueue()
Method Detail |
public static RunnableQueue createRunnableQueue()
public void run()
run
in interface java.lang.Runnable
public java.lang.Thread getThread()
public void invokeLater(java.lang.Runnable r)
java.lang.IllegalStateException
- if getThread() is null.public void invokeAndWait(java.lang.Runnable r) throws java.lang.InterruptedException
java.lang.IllegalStateException
- if getThread() is null or if the
thread returned by getThread() is the current one.public void preemptLater(java.lang.Runnable r)
java.lang.IllegalStateException
- if getThread() is null.public void preemptAndWait(java.lang.Runnable r) throws java.lang.InterruptedException
java.lang.IllegalStateException
- if getThread() is null or if the
thread returned by getThread() is the current one.public RunnableQueue.RunnableQueueState getQueueState()
public void suspendExecution(boolean waitTillSuspended)
waitTillSuspended
- if true this method will not return
until the queue has suspended (no runnable in progress
or about to be in progress). If resumeExecution is
called while waiting will simply return (this really
indicates a race condition in your code). This may
return before an associated RunHandler is notified.java.lang.IllegalStateException
- if getThread() is null.public void resumeExecution()
java.lang.IllegalStateException
- if getThread() is null.public java.lang.Object getIteratorLock()
public java.util.Iterator iterator()
public void setRunHandler(RunnableQueue.RunHandler rh)
public RunnableQueue.RunHandler getRunHandler()
protected void executionSuspended()
protected void executionResumed()
protected void runnableInvoked(java.lang.Runnable rable)
rable
- The runnable that just completed.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |