TimerThread (jTDS API)
Date: 2013-06-08

net.sourceforge.jtds.util

## Class TimerThread

- java.lang.Object
- - java.lang.Thread
  - - net.sourceforge.jtds.util.TimerThread

- All Implemented Interfaces:
    java.lang.Runnable

      public class TimerThread
      extends java.lang.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

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static interface` | `TimerThread.TimerListener` Interface to be implemented by classes that request timer services.
    `private static class` | `TimerThread.TimerRequest` Internal class associating a login or query timeout value with a target `TimerListener`.

    - ### Nested classes/interfaces inherited from class java.lang.Thread

      `java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private static TimerThread` | `instance` Singleton instance.
    `private long` | `nextTimeout` Time when the first request time out should occur.
    `private java.util.LinkedList` | `timerList` List of `TimerRequest`s to execute, ordered by time.

    - ### Fields inherited from class java.lang.Thread

      `MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TimerThread()` Construct a new `TimerThread` instance.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `cancelTimer(java.lang.Object handle)` Remove a redundant timer before it expires.
    `static TimerThread` | `getInstance()` Singleton getter.
    `boolean` | `hasExpired(java.lang.Object handle)` Check whether a timer has expired.
    `void` | `run()` Execute the `TimerThread` main loop.
    `java.lang.Object` | `setTimer(int timeout, TimerThread.TimerListener l)` Add a timer request to the queue.
    `static void` | `stopTimer()` Completely stops the timer and its underlying Java thread, discarding all pending timeouts.
    `private void` | `updateNextTimeout()` Internal method that updates the value of `nextTimeout`.

    - ### Methods inherited from class java.lang.Thread

      `activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield`

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### instance

          private static TimerThread instance

      Singleton instance.

    - #### timerList

          private final java.util.LinkedList timerList

      List of `TimerRequest`s to execute, ordered by time.

    - #### nextTimeout

          private long nextTimeout

      Time when the first request time out should occur.

  - ### Constructor Detail

    - #### TimerThread

          public TimerThread()

      Construct a new `TimerThread` instance.

  - ### Method Detail

    - #### getInstance

          public static TimerThread getInstance()

      Singleton getter.

    - #### run

          public void run()

      Execute the `TimerThread` main loop.
      Specified by:
        `run` in interface `java.lang.Runnable`
      Overrides:
        `run` in class `java.lang.Thread`

    - #### setTimer

          public java.lang.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(java.lang.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(java.lang.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`.

Generated on June 8 2013