Timer : Java Glossary

go to home page T words local find full screen, hide local find menu Google search web for more information on this topic jump to foot of page translate this page with Babelfish punctuation 0-9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z (all) ©1996-2009 2008-04-13 Roedy Green, Canadian Mind Products
Timer
If you want a task to be run at some time in the future or repeatedly at regular intervals, in JDK 1.3+, you can schedule it with the java.util.Timer class. This is more efficient than creating a Thread for the purpose and sleeping. java.util.Timer efficiently handles all such future events with a single thread. If the event you want to spawn takes a long time, it should spawn its own thread so as not to hold up other events being handled.

The whole idea of java.util.Timer is to avoid the overhead of creating a new Thread for every task. So there is only one Thread to handle all the tasks scheduled on a given Timer. That it why it must execute the tasks sequentially even if scheduled at the same time. If you want two tasks to run simulateously you will need to either spawn a separate task when the trigger happens or use two Timers.

java.util.Timer

javax.swing.Timer

In JDK 1.2+, javax.swing.Timer has similar capabilities. Use it only for GUI activities since the actions tie up the Swing thread, which is what you want for Swing method invocations. You don’t need SwingUtilities. invokeLater with javax.swing.Timer since it automatically dispatches the timer events on the Swing thread.

In JDK 1.5+ there is a an even more sophisticated timer called java.util.concurrent.ScheduledThreadPoolExecutor.

Long-Running Events

Timers work with a single Thread. That means your event must complete before the next event needs to be scheduled. If you have a very long running event to be scheduled, have your Timer event start a new Thread to run in the background in parallel with the Timer Thread.

See the warning under Gotchas:Threads on why a sleeping task waiting for the next timer event may never waken if somebody fiddles with the system clock setting while your thread is asleep.

Learning More

Sun’s Javadoc on java.util.Timer class : available:
Sun’s Javadoc on javax.swing.Timer class : available:
Sun’s Javadoc on ScheduledThreadPoolExecutor class : available:

CMP homejump to top You can get the freshest copy of this page from: or possibly from your local J: drive (Java virtual drive/mindprod.com website mirror)
http://mindprod.com/jgloss/timer.html J:\mindprod\jgloss\timer.html
CMP logofeedback Please email your feedback for publication, errors, omissions, typos, formatting errors, ambiguities, unclear wording, broken/redirected link reports, suggestions to improve this page or comments to Roedy Green : feedback email
mindprod.com IP:[65.110.21.43]
view BlogYour face IP:[38.107.191.103]
You are visitor number 38,122.