Java.util.Timer Class in Java

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:



  1. 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()
  2. 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
  3. 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
  4. 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
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // 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);
              
        }
    }

    chevron_right

    
    

    Output:

    Timer ran 1
    Timer ran 2
    Timer ran 3
    Timer ran 4
    Timer ran 5
    .
    .
    .
    
  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
  6. 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
  7. 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
  8. 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
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // 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'stak queue
                System.out.println(timer.purge());
            }
        }
    }

    chevron_right

    
    

    Output:

    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 Java and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Improved By : Akanksha_Rai

Article Tags :
Practice Tags :


2


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.