Java.util.Timer Class in Java

14 Nov, 2021
Timer class provides a method call that is used by a thread to schedule a task, such as running a block of code after some regular instant of time. Each task may be scheduled to run once or for a repeated number of executions. Each timer object is associated with a background thread that is responsible for the execution of all the tasks of a timer object. Note: 
Timer class is thread-safe.
Timer class uses binary heap data structure in order to store its task.
Constructors: 
Timer(): Creates a new timer
Timer(boolean isDaemon): Creates a new timer whose associated thread may be specified to run as a daemon
Timer(String name): Creates a new timer whose associated thread has the specified name
Timer(String name, boolean isDaemon): Creates a new timer whose associated thread has the specified name, and may be specified to run as a daemon
Declaration:  
public class Timer
        extends Object
Methods inherited from class java.lang.Object
clone
equals
finalize
getClass
hashCode
notify
notifyAll
toString
wait
Methods: 
cancel(): java.util.Timer.cancel() Terminates this timer, discarding any currently scheduled tasks. Does not interfere with a currently executing task (if it exists). Once a timer has been terminated, its execution thread terminates gracefully, and no more tasks may be scheduled on it Syntax: 
public void cancel()
purge(): java.util.Timer.purge() Removes all cancelled tasks from this timer’s task queue Syntax: 
public int purge()
Returns:
the number of tasks removed from the queue
schedule(TimerTask task, Date time): java.util.Timer.schedule(TimerTask task, Date time) Schedules the specified task for execution at the specified time Syntax: 
public void schedule(TimerTask task, Date time)
Parameters:
task - task to be scheduled.
time - time at which task is to be executed.
Throws:
IllegalArgumentException - if time.getTime() is negative.
IllegalStateException - if the task was already scheduled or cancelled, 
the timer was cancelled, or timer thread terminated.
NullPointerException - if task or time is null
schedule(TimerTask task, Date firstTime, long period): java.util.Timer.schedule(TimerTask task, Date firstTime, long period) Schedules the specified task for repeated fixed-delay execution, beginning at the specified time Syntax: 
public void schedule(TimerTask task, Date firstTime, long period)
Parameters:
task - task to be scheduled.
firstTime - First time at which task is to be executed.
period - time in milliseconds between successive task executions.
Throws:
IllegalArgumentException - if firstTime.getTime() < 0,
 or period <= 0
IllegalStateException - if task was already scheduled 
or cancelled, timer was cancelled, 
or timer thread terminated.
NullPointerException - if task or firstTime is null
Java
// Java program to demonstrate//schedule method calls of Timer class import java.util.Timer;import java.util.TimerTask; class Helper extends TimerTask{    public static int i = 0;    public void run()    {        System.out.println("Timer ran " + ++i);    }} public class Test{    public static void main(String[] args)    {                 Timer timer = new Timer();        TimerTask task = new Helper();                 timer.schedule(task, 2000, 5000);             }}
Output: 
Timer ran 1
Timer ran 2
Timer ran 3
Timer ran 4
Timer ran 5
.
.
.
schedule(TimerTask task, long delay): java.util.Timer.schedule(TimerTask task, long delay) Schedules the specified task for execution after the specified delay Syntax: 
public void schedule(TimerTask task, long delay)
Parameters:
task - task to be scheduled.
delay - delay in milliseconds before task is to be executed.
Throws:
IllegalArgumentException - if delay is negative,
or delay + System.currentTimeMillis() is negative.
IllegalStateException - if a task was already scheduled 
or cancelled, the timer was cancelled, 
or timer thread terminated.
NullPointerException - if task is null
schedule(TimerTask task, long delay, long period): java.util.Timer.schedule(TimerTask task, long delay, long period) Schedules the specified task for repeated fixed-delay execution, beginning after the specified delaySyntax:  
public void schedule(TimerTask task, long delay, long period)
Parameters:
task - task to be scheduled.
delay - delay in milliseconds before task is to be executed.
period - time in milliseconds between successive task executions.
Throws:
IllegalArgumentException - if delay < 0, 
or delay + System.currentTimeMillis() < 0, or 
period <= 0
IllegalStateException - if task was already scheduled 
or cancelled, timer was cancelled, 
or timer thread terminated.
NullPointerException - if task is null
scheduleAtFixedRate(TimerTask task, Date firstTime, long period): java.util.Timer.scheduleAtFixedRate(TimerTask task, Date firstTime, long period) Schedules the specified task for repeated fixed-rate execution, beginning at the specified timeSyntax:  
public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)
Parameters:
task - task to be scheduled.
firstTime - First time at which task is to be executed.
period - time in milliseconds between successive task executions.
Throws:
IllegalArgumentException - if firstTime.getTime() <
0 or period <= 0
IllegalStateException - if task was already scheduled
 or cancelled, timer was cancelled, 
or timer thread terminated.
NullPointerException - if task or firstTime is null
scheduleAtFixedRate(TimerTask task, long delay, long period): java.util.Timer.scheduleAtFixedRate(TimerTask task, long delay, long period) Schedules the specified task for repeated fixed-rate execution, beginning after the specified delaySyntax:  
public void scheduleAtFixedRate(TimerTask task, long delay, long period)
Parameters:
task - task to be scheduled.
delay - delay in milliseconds before task is to be executed.
period - time in milliseconds between successive task executions.
Throws:
IllegalArgumentException - if delay < 0, 
or delay + System.currentTimeMillis() < 0, or 
period <= 0
IllegalStateException - if task was already 
scheduled or cancelled, timer was cancelled, 
or timer thread terminated.
NullPointerException - if task is null
Java
// Java program to demonstrate// scheduleAtFixedRate method of Timer class import java.util.Timer;import java.util.TimerTask;import java.util.*;  class Helper extends TimerTask{    public static int i = 0;    public void run()    {        System.out.println("Timer ran " + ++i);        if(i == 4)        {            synchronized(Test.obj)            {                Test.obj.notify();            }        }    }     }  public class Test{    protected static Test obj;    public static void main(String[] args) throws InterruptedException    {        obj = new Test();                 //creating a new instance of timer class        Timer timer = new Timer();        TimerTask task = new Helper();         //instance of date object for fixed-rate execution        Date date = new Date();         timer.scheduleAtFixedRate(task, date, 5000);                 System.out.println("Timer running");        synchronized(obj)        {            //make the main thread wait            obj.wait();                         //once timer has scheduled the task 4 times,            //main thread resumes            //and terminates the timer            timer.cancel();                         //purge is used to remove all cancelled            //tasks from the timer'stack queue            System.out.println(timer.purge());        }    }}
Output: 
Timer running
Timer ran 1
Timer ran 2
Timer ran 3
Timer ran 4
0
Reference:  
Oracle
This article is contributed by Mayank Kumar. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Akanksha_Rai
surinderdawra388
Java - util package
Java
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.