net.sourceforge.jtds.util

Class TimerThread


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 2005/04/28 14:29:31 alin_sinpalean Exp $
Authors:
Alin Sinpalean
Mike Hutchinson

Nested Class Summary

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.

Field Summary

private static TimerThread
instance
Singleton instance.
private long
nextTimeout
Time when the first request time out should occur.
private LinkedList
timerList
List of TimerRequests to execute, ordered by time.

Constructor Summary

TimerThread()
Construct a new TimerThread instance.

Method Summary

boolean
cancelTimer(Object handle)
Remove a redundant timer before it expires.
static TimerThread
getInstance()
Singleton getter.
boolean
hasExpired(Object handle)
Check whether a timer has expired.
void
run()
Execute the TimerThread main loop.
Object
setTimer(int timeout, TimerThread.TimerListener l)
Add a timer request to the queue.
private void
updateNextTimeout()
Internal method that updates the value of nextTimeout.

Field Details

instance

private static TimerThread instance
Singleton instance.

nextTimeout

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

timerList

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

Constructor Details

TimerThread

public TimerThread()
Construct a new TimerThread instance.

Method Details

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

getInstance

public static TimerThread getInstance()
Singleton getter.

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

run

public void run()
Execute the TimerThread main loop.

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

updateNextTimeout

private void updateNextTimeout()

Generated on September 18 2009