Package net.sourceforge.jtds.util
Class TimerThread
java.lang.Object
java.lang.Thread
net.sourceforge.jtds.util.TimerThread
- All Implemented Interfaces:
Runnable
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 ClassesModifier and TypeClassDescriptionstatic interface
Interface to be implemented by classes that request timer services.private static class
Internal class associating a login or query timeout value with a targetTimerListener
.Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static TimerThread
Singleton instance.private long
Time when the first request time out should occur.private final LinkedList
List ofTimerRequest
s to execute, ordered by time.Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
cancelTimer
(Object handle) Remove a redundant timer before it expires.static TimerThread
Singleton getter.boolean
hasExpired
(Object handle) Check whether a timer has expired.void
run()
Execute theTimerThread
main loop.setTimer
(int timeout, TimerThread.TimerListener l) Add a timer request to the queue.static void
Completely stops the timer and its underlying Java thread, discarding all pending timeouts.private void
Internal method that updates the value ofnextTimeout
.Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
-
Field Details
-
instance
Singleton instance. -
timerList
List ofTimerRequest
s to execute, ordered by time. -
nextTimeout
private long nextTimeoutTime when the first request time out should occur.
-
-
Constructor Details
-
TimerThread
public TimerThread()Construct a newTimerThread
instance.
-
-
Method Details
-
getInstance
Singleton getter. -
run
public void run()Execute theTimerThread
main loop. -
setTimer
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 expirel
-TimerListener
to be notified on timeout- Returns:
- a handle to the timer request, that can later be used with
cancelTimer
-
cancelTimer
Remove a redundant timer before it expires.- Parameters:
handle
- handle to the request to be removed from the queue (aTimerRequest
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 ofgetInstance()
will restart the timer. -
hasExpired
Check whether a timer has expired.- Parameters:
handle
- handle to the request to be checked for expiry (aTimerRequest
instance)- Returns:
true
if timer has expired
-
updateNextTimeout
private void updateNextTimeout()Internal method that updates the value ofnextTimeout
.
-