Package edu.rit.util

Interface TimerTask


public interface TimerTask
Interface TimerTask specifies the interface for an object that performs timed actions under the control of a Timer.

When a timer is created, it is associated with a timer task. When the timer becomes triggered -- that is, when the time comes to do the timed actions -- the timer calls the timer task's action() method. The timer passes a reference to itself as an argument to the timer task's action() method.

The first thing the timer task must do in the action() method is check whether the timer is still triggered. If it is, the action() method can perform its processing. But if the timer is no longer triggered, the action() method must return without doing anything.

This is to deal with a race condition that can arise when multiple threads are involved. Suppose the timer thread triggers the timer, the timer calls the timer task's action() method, and the action() method synchronizes on the object that will perform the action. Suppose the action() method blocks because some other thread is already executing a synchronized method on this object. Suppose the other thread cancels the timer. Here is the race condition: the timer was canceled just as it was triggered but before it could do the timed actions. When the other thread returns, the action() method unblocks and proceeds to execute. The action() method must check whether the timer got canceled between the time when the action() method was called and the time when the action() method started executing. If the action() method doesn't do this check, it may erroneously perform the timeout actions despite the timer cancellation.

Classes Timer, TimerTask, and TimerThread provide capabilities similar to classes java.util.Timer and java.util.TimerTask. Unlike the latter, they also provide the ability to stop and restart a timer and the ability to deal with race conditions in multithreaded programs.

Version:
27-Sep-2002
Author:
Alan Kaminsky
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    action(Timer theTimer)
    Perform this timer task's timed actions.
  • Method Details

    • action

      void action(Timer theTimer)
      Perform this timer task's timed actions. The Timer that was triggered is passed in as an argument.

      The action() method must check whether the timer is still triggered. If it is, the action() method can perform its processing. But if the timer is no longer triggered, the action() method must return without doing anything.

      Parameters:
      theTimer - Timer that was triggered.