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 program to demonstrate//schedule method calls of Timer classimportjava.util.Timer;importjava.util.TimerTask;classHelperextendsTimerTask{publicstaticinti =0;publicvoidrun(){System.out.println("Timer ran "+ ++i);}}publicclassTest{publicstaticvoidmain(String[] args){Timer timer =newTimer();TimerTask task =newHelper();timer.schedule(task,2000,5000);}}chevron_rightfilter_noneOutput:
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 program to demonstrate// scheduleAtFixedRate method of Timer classimportjava.util.Timer;importjava.util.TimerTask;importjava.util.*;classHelperextendsTimerTask{publicstaticinti =0;publicvoidrun(){System.out.println("Timer ran "+ ++i);if(i ==4){synchronized(Test.obj){Test.obj.notify();}}}}publicclassTest{protectedstaticTest obj;publicstaticvoidmain(String[] args)throwsInterruptedException{obj =newTest();//creating a new instance of timer classTimer timer =newTimer();TimerTask task =newHelper();//instance of date object for fixed-rate executionDate date =newDate();timer.scheduleAtFixedRate(task, date,5000);System.out.println("Timer running");synchronized(obj){//make the main thread waitobj.wait();//once timer has scheduled the task 4 times,//main thread resumes//and terminates the timertimer.cancel();//purge is used to remove all cancelled//tasks from the timer'stak queueSystem.out.println(timer.purge());}}}chevron_rightfilter_noneOutput:
Timer running Timer ran 1 Timer ran 2 Timer ran 3 Timer ran 4 0
Reference:
This article is contributed by Mayank Kumar. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@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.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
Recommended Posts:
- Implement Ennead Class from Octet Class in Java using JavaTuples
- Implement Octet Class from Septet Class in Java using JavaTuples
- Implement Sextet Class from Quintet Class in Java using JavaTuples
- Implement Decade Class from Ennead Class in Java using JavaTuples
- Implement Septet Class from Sextet Class in Java using JavaTuples
- Implement Quartet Class with Triplet Class in Java using JavaTuples
- Implement Triplet Class with Pair Class in Java using JavaTuples
- Implement Quintet Class with Quartet Class in Java using JavaTuples
- Implement Pair Class with Unit Class in Java using JavaTuples
- Difference between Abstract Class and Concrete Class in Java
- In Java, Can we call the main() method of a class from another class?
- Using predefined class name as Class or Variable name in Java
- Java.lang.Class class in Java | Set 1
- Java.lang.Class class in Java | Set 2
- Java.util.concurrent.RecursiveAction class in Java with Examples
- Java.util.concurrent.Phaser class in Java with Examples
- Java.util.concurrent.RecursiveTask class in Java with Examples
- Java.util.BitSet class methods in Java with Examples | Set 2
- Java.util.BitSet class in Java with Examples | Set 1
- Java.awt.image.RescaleOp Class in Java with Examples
Improved By : Akanksha_Rai

