Class WakeupManager
Runnable. Events can either be executed in
the queue's thread or in their own thread. A task is an object that implements
Runnable. It is scheduled by invoking schedule with a time at which it should be run. When that time
arrives (approximately) the task will be pulled off the queue and have its run method invoked.
A schedule request can specify a WakeupManager.ThreadDesc, which will define
the parameters of a thread to be created to run the Runnable. You can specify the
group, whether the thread is a daemon thread, and the priority. Additionally you can use a
subclass of WakeupManager.ThreadDesc and override the thread method to further customize thread creation.
When a task is scheduled, a WakeupManager.Ticket is returned that can be used to cancel
the event if desired.
The queue requires its own thread, whose parameters can be defined via a ThreadDesc
if desired. The queue's thread will be started when the first task is scheduled. If the queue
becomes empty the thread will be terminated after a configurable
delay. The thread will be re-started if a new task is scheduled.
While it is theoretically possible to obtain the queue's thread and interrupt it, the results of
doing so are undefined. If a client wishes to stop the queue's thread the client should either
remove all the tasks or call stop(). Note, calling stop will cause future
schedule calls to fail with an IllegalStateException.
WakeupManager supports the queueThreadTimeout
configuration entry, with the component com.sun.jini.thread.WakeupManager.
| • |
queueThreadTimeout
| |
|---|---|---|
|   | Type: | long
|
|   | Default: | 30,000 milliseconds |
|   | Description: | How long, in
milliseconds, the queue's thread will be left running if there are no scheduled tasks. Must be a
non-negative long value. This configuration entry is consulted when the
WakeupManager is initially created.
|
This class uses the Logger named com.sun.jini.thread.WakeupManager to log
information at the following logging levels:
| Level | Description |
|---|---|
| SEVERE | exceptions thrown when we attempt to create the queue's thread |
| WARNING | exceptions thrown by the run methods of tasks, by the
ThreadDesc's of tasks, or if the queue's thread is interrupted
|
| FINEST | how many milliseconds until the next event and when the queue's thread is stopped or started |
- Author:
- Sun Microsystems, Inc.
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classDescription of a future thread.static classA ticket that can be used for cancelling a future task. -
Constructor Summary
ConstructorsConstructorDescriptionCreate a newWakeupManager.Create a newWakeupManager.WakeupManager(WakeupManager.ThreadDesc desc, Configuration config) Create a newWakeupManager. -
Method Summary
Modifier and TypeMethodDescriptionvoidCancel the given ticket.voidCancel all tickets.booleanisEmpty()Return whether the queue is currently empty.protected WakeupManager.TicketnewTicket(long when, Runnable task, WakeupManager.ThreadDesc threadDesc) Create a new ticket with the specified values for when the task should be run, what task should be run, and what sort of thread the task should be run in.Schedule the given task for the given time.schedule(long when, Runnable task, WakeupManager.ThreadDesc threadDesc) Schedule the given task for the given time, to be run in a thread.voidstop()Stop executing.
-
Constructor Details
-
WakeupManager
public WakeupManager()Create a newWakeupManager. Equivalent to.WakeupManager(new ThreadDesc())- See Also:
-
WakeupManager
Create a newWakeupManager. The thread used for timing will be created according to the providedThreadDesc.- Throws:
NullPointerException- if desc is null
-
WakeupManager
public WakeupManager(WakeupManager.ThreadDesc desc, Configuration config) throws ConfigurationException Create a newWakeupManager. The thread used for timing will be created according to the providedThreadDesc. Optionally pass a configuration to control various implementation specific behaviors.- Throws:
ConfigurationException- if if an exception occurs while retrieving an item from the givenConfigurationobjectNullPointerException- if either argument is null
-
-
Method Details
-
newTicket
protected WakeupManager.Ticket newTicket(long when, Runnable task, WakeupManager.ThreadDesc threadDesc) Create a new ticket with the specified values for when the task should be run, what task should be run, and what sort of thread the task should be run in.- Parameters:
when- when the task should run, an absolute timetask- what task should be runthreadDesc- if non-nullthe object to use to create the thread the task should be run in, ifnullthe task should be run in the manager's thread.- Throws:
NullPointerException- if task isnull
-
schedule
Schedule the given task for the given time. The task'srunmethod will be executed synchronously in the queue's own thread, so it should be brief or it will affect whether future events will be executed at an appropriate time.- Throws:
NullPointerException- iftaskisnullIllegalStateException- if the manager has been stopped
-
schedule
Schedule the given task for the given time, to be run in a thread. When the time comes, a new thread will be created according to theThreadDescobject provided. IfthreadDescisnull, this is equivalent to the other form ofschedule.- Throws:
NullPointerException- iftaskisnullIllegalStateException- if the manager has been stopped
-
cancel
Cancel the given ticket. -
cancelAll
public void cancelAll()Cancel all tickets. -
isEmpty
public boolean isEmpty()Return whether the queue is currently empty. -
stop
public void stop()Stop executing.
-