Class TimerThread

java.lang.Object
java.lang.Thread
net.sourceforge.jtds.util.TimerThread
All Implemented Interfaces:
Runnable

public class TimerThread extends Thread
Simple timer class used to implement login and query timeouts.

This thread runs as a Daemon thread to ensure that the java VM will exit correctly when normal execution is complete.

It provides both a singleton implementation and a default constructor for the case when more than one timer thread is desired.

Version:
$Id: TimerThread.java,v 1.5.2.3 2010-05-17 09:16:06 ickzon Exp $
Author:
Alin Sinpalean, Mike Hutchinson
  • Field Details

    • instance

      private static TimerThread instance
      Singleton instance.
    • timerList

      private final LinkedList timerList
      List of TimerRequests to execute, ordered by time.
    • nextTimeout

      private long nextTimeout
      Time when the first request time out should occur.
  • Constructor Details

    • TimerThread

      public TimerThread()
      Construct a new TimerThread instance.
  • Method Details

    • getInstance

      public static TimerThread getInstance()
      Singleton getter.
    • run

      public void run()
      Execute the TimerThread main loop.
      Specified by:
      run in interface Runnable
      Overrides:
      run in class Thread
    • setTimer

      public Object setTimer(int timeout, TimerThread.TimerListener l)
      Add a timer request to the queue.

      The queue is ordered by time so that the head of the list is always the first timer to expire.

      Parameters:
      timeout - the interval in milliseconds after which the timer will expire
      l - TimerListener to be notified on timeout
      Returns:
      a handle to the timer request, that can later be used with cancelTimer
    • cancelTimer

      public boolean cancelTimer(Object handle)
      Remove a redundant timer before it expires.
      Parameters:
      handle - handle to the request to be removed from the queue (a TimerRequest instance)
      Returns:
      true if timer had not expired
    • stopTimer

      public static void stopTimer()
      Completely stops the timer and its underlying Java thread, discarding all pending timeouts. Any subsequent invocation of getInstance() will restart the timer.
    • hasExpired

      public boolean hasExpired(Object handle)
      Check whether a timer has expired.
      Parameters:
      handle - handle to the request to be checked for expiry (a TimerRequest instance)
      Returns:
      true if timer has expired
    • updateNextTimeout

      private void updateNextTimeout()
      Internal method that updates the value of nextTimeout.