| java.lang.Object java.util.Timer org.jgroups.util.TimeScheduler
All known Subclasses: org.jgroups.util.ImmediateTask,
TimeScheduler | public class TimeScheduler extends Timer (Code) | | Fixed-delay & fixed-rate single thread scheduler
The scheduler supports varying scheduling intervals by asking the task
every time for its next preferred scheduling interval. Scheduling can
either be fixed-delay or fixed-rate. The notions are
borrowed from java.util.Timer and retain the same meaning.
I.e. in fixed-delay scheduling, the task's new schedule is calculated
as:
new_schedule = time_task_starts + scheduling_interval
In fixed-rate scheduling, the next schedule is calculated as:
new_schedule = time_task_was_supposed_to_start + scheduling_interval
The scheduler internally holds a queue of tasks sorted in ascending order
according to their next execution time. A task is removed from the queue
if it is cancelled, i.e. if TimeScheduler.Task.isCancelled()
returns true.
The scheduler internally uses a java.util.SortedSet to keep tasks
sorted. java.util.Timer uses an array arranged as a binary heap
that doesn't shrink. It is likely that the latter arrangement is faster.
Initially, the scheduler is in SUSPENDed mode, start()
need not be called: if a task is added, the scheduler gets started
automatically. Calling start() starts the scheduler if it's
suspended or stopped else has no effect. Once stop() is called,
added tasks will not restart it: start() has to be called to
restart the scheduler.
author: Bela Ban version: $Id: TimeScheduler.java,v 1.14.2.2 2007/04/27 09:11:18 belaban Exp $ |
Inner Class :public interface Task | |
Inner Class :public interface CancellableTask extends Task | |
Field Summary | |
final protected static Log | log |
Method Summary | |
public void | add(Task task, boolean relative) Add a task for execution at adjustable intervals
Parameters: task - the task to execute Parameters: relative - scheduling scheme:true: Task is rescheduled relative to the last time it actuallystarted executionfalse: Task is scheduled relative to its last execution schedule. | public void | add(Task t) | public void | cancel() | public String | dumpTaskQueue() | public void | schedule(TimerTask task, long delay) | public void | schedule(TimerTask task, long delay, long period) | public void | schedule(TimerTask task, Date firstTime, long period) | public void | schedule(TimerTask task, Date time) | public void | scheduleAtFixedRate(TimerTask task, long delay, long period) | public void | scheduleAtFixedRate(TimerTask task, Date firstTime, long period) | public int | size() Returns the number of tasks currently scheduled. | public void | start() | public void | stop() Stop the scheduler if it's running. |
log | final protected static Log log(Code) | | |
TimeScheduler | public TimeScheduler()(Code) | | |
TimeScheduler | public TimeScheduler(boolean isDaemon)(Code) | | |
add | public void add(Task task, boolean relative)(Code) | | Add a task for execution at adjustable intervals
Parameters: task - the task to execute Parameters: relative - scheduling scheme:true: Task is rescheduled relative to the last time it actuallystarted executionfalse: Task is scheduled relative to its last execution schedule. Thishas the effect that the time between two consecutive executions ofthe task remains the same.April 07: the relative argument is ignored, will always be true |
add | public void add(Task t)(Code) | | Add a task for execution at adjustable intervals
Parameters: t - the task to execute |
cancel | public void cancel()(Code) | | |
schedule | public void schedule(TimerTask task, long delay, long period)(Code) | | |
scheduleAtFixedRate | public void scheduleAtFixedRate(TimerTask task, long delay, long period)(Code) | | |
scheduleAtFixedRate | public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)(Code) | | |
size | public int size()(Code) | | Returns the number of tasks currently scheduled. Note that this is an approximation.
The number of tasks currently in the queue. |
start | public void start()(Code) | | Start the scheduler, if it's suspended or stopped
|
stop | public void stop() throws InterruptedException(Code) | | Stop the scheduler if it's running. Switch to stopped, if it's
suspended. Clear the task queue.
throws: InterruptedException - if interrupted while waiting for threadto return |
Methods inherited from java.util.Timer | public void cancel()(Code)(Java Doc) public int purge()(Code)(Java Doc) public void schedule(TimerTask task, long delay)(Code)(Java Doc) public void schedule(TimerTask task, Date time)(Code)(Java Doc) public void schedule(TimerTask task, long delay, long period)(Code)(Java Doc) public void schedule(TimerTask task, Date firstTime, long period)(Code)(Java Doc) public void scheduleAtFixedRate(TimerTask task, long delay, long period)(Code)(Java Doc) public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)(Code)(Java Doc)
|
|
|