java.util
Class Timer

java.lang.Object
  extended by java.util.Timer

public class Timer
extends Object

Timer that can run TimerTasks at a later time. TimerTasks can be scheduled for one time execution at some time in the future. They can be scheduled to be rescheduled at a time period after the task was last executed. Or they can be scheduled to be executed repeatedly at a fixed rate.

The normal scheduling will result in a more or less even delay in time between successive executions, but the executions could drift in time if the task (or other tasks) takes a long time to execute. Fixed delay scheduling guarantees more or less that the task will be executed at a specific time, but if there is ever a delay in execution then the period between successive executions will be shorter. The first method of repeated scheduling is preferred for repeated tasks in response to user interaction, the second method of repeated scheduling is preferred for tasks that act like alarms.

The Timer keeps a binary heap as a task priority queue which means that scheduling and serving of a task in a queue of n tasks costs O(log n).

Since:
1.3
See Also:
TimerTask

Constructor Summary
Timer()
          Creates a new Timer with a non daemon Thread as Scheduler, with normal priority and a default name.
Timer(boolean daemon)
          Creates a new Timer with a daemon Thread as scheduler if daemon is true, with normal priority and a default name.
Timer(String name)
          Create a new Timer whose Thread has the indicated name.
Timer(String name, boolean daemon)
          Create a new Timer whose Thread has the indicated name.
 
Method Summary
 void cancel()
          Cancels the execution of the scheduler.
protected  void finalize()
          Tells the scheduler that the Timer task died so there will be no more new tasks scheduled.
 int purge()
          Removes all cancelled tasks from the queue.
 void schedule(TimerTask task, Date date)
          Schedules the task at the specified data for one time execution.
 void schedule(TimerTask task, Date date, long period)
          Schedules the task at the specified date and reschedules the task every period milliseconds after the last execution of the task finishes until this timer or the task is canceled.
 void schedule(TimerTask task, long delay)
          Schedules the task after the specified delay milliseconds for one time execution.
 void schedule(TimerTask task, long delay, long period)
          Schedules the task after the delay milliseconds and reschedules the task every period milliseconds after the last execution of the task finishes until this timer or the task is canceled.
 void scheduleAtFixedRate(TimerTask task, Date date, long period)
          Schedules the task at the specified date and reschedules the task at a fixed rate every period milliseconds until this timer or the task is canceled.
 void scheduleAtFixedRate(TimerTask task, long delay, long period)
          Schedules the task after the delay milliseconds and reschedules the task at a fixed rate every period milliseconds until this timer or the task is canceled.
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Timer

public Timer()
Creates a new Timer with a non daemon Thread as Scheduler, with normal priority and a default name.


Timer

public Timer(boolean daemon)
Creates a new Timer with a daemon Thread as scheduler if daemon is true, with normal priority and a default name.


Timer

public Timer(String name)
Create a new Timer whose Thread has the indicated name. It will have normal priority and will not be a daemon thread.

Parameters:
name - the name of the Thread
Since:
1.5

Timer

public Timer(String name,
             boolean daemon)
Create a new Timer whose Thread has the indicated name. It will have normal priority. The boolean argument controls whether or not it will be a daemon thread.

Parameters:
name - the name of the Thread
daemon - true if the Thread should be a daemon thread
Since:
1.5
Method Detail

cancel

public void cancel()
Cancels the execution of the scheduler. If a task is executing it will normally finish execution, but no other tasks will be executed and no more tasks can be scheduled.


schedule

public void schedule(TimerTask task,
                     Date date)
Schedules the task at the specified data for one time execution.

Throws:
IllegalArgumentException - if date.getTime() is negative
IllegalStateException - if the task was already scheduled or canceled or this Timer is canceled or the scheduler thread has died

schedule

public void schedule(TimerTask task,
                     Date date,
                     long period)
Schedules the task at the specified date and reschedules the task every period milliseconds after the last execution of the task finishes until this timer or the task is canceled.

Throws:
IllegalArgumentException - if period or date.getTime() is negative
IllegalStateException - if the task was already scheduled or canceled or this Timer is canceled or the scheduler thread has died

schedule

public void schedule(TimerTask task,
                     long delay)
Schedules the task after the specified delay milliseconds for one time execution.

Throws:
IllegalArgumentException - if delay or System.currentTimeMillis + delay is negative
IllegalStateException - if the task was already scheduled or canceled or this Timer is canceled or the scheduler thread has died

schedule

public void schedule(TimerTask task,
                     long delay,
                     long period)
Schedules the task after the delay milliseconds and reschedules the task every period milliseconds after the last execution of the task finishes until this timer or the task is canceled.

Throws:
IllegalArgumentException - if delay or period is negative
IllegalStateException - if the task was already scheduled or canceled or this Timer is canceled or the scheduler thread has died

scheduleAtFixedRate

public void scheduleAtFixedRate(TimerTask task,
                                Date date,
                                long period)
Schedules the task at the specified date and reschedules the task at a fixed rate every period milliseconds until this timer or the task is canceled.

Throws:
IllegalArgumentException - if period or date.getTime() is negative
IllegalStateException - if the task was already scheduled or canceled or this Timer is canceled or the scheduler thread has died

scheduleAtFixedRate

public void scheduleAtFixedRate(TimerTask task,
                                long delay,
                                long period)
Schedules the task after the delay milliseconds and reschedules the task at a fixed rate every period milliseconds until this timer or the task is canceled.

Throws:
IllegalArgumentException - if delay or System.currentTimeMillis + delay is negative
IllegalStateException - if the task was already scheduled or canceled or this Timer is canceled or the scheduler thread has died

finalize

protected void finalize()
                 throws Throwable
Tells the scheduler that the Timer task died so there will be no more new tasks scheduled.

Overrides:
finalize in class Object
Throws:
Throwable - permits a subclass to throw anything in an overridden version; but the default throws nothing
See Also:
System.gc(), System.runFinalizersOnExit(boolean), java.lang.ref

purge

public int purge()
Removes all cancelled tasks from the queue.

Returns:
the number of tasks removed
Since:
1.5