Java.util.Timer Class in Java (original) (raw)
Last Updated : 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
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
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();
`` Timer timer =
new
Timer();
`` TimerTask task =
new
Helper();
`` Date date =
new
Date();
`` timer.scheduleAtFixedRate(task, date,
5000
);
`` System.out.println(
"Timer running"
);
`` synchronized
(obj)
`` {
`` obj.wait();
`` timer.cancel();
`` System.out.println(timer.purge());
`` }
`` }
}
Output:
Timer running Timer ran 1 Timer ran 2 Timer ran 3 Timer ran 4 0
Reference: