www.pudn.com > jnp-src.rar > Alarm.java
/*
* Java Network Programming, Second Edition
* Merlin Hughes, Michael Shoffner, Derek Hamner
* Manning Publications Company; ISBN 188477749X
*
* http://nitric.com/jnp/
*
* Copyright (c) 1997-1999 Merlin Hughes, Michael Shoffner, Derek Hamner;
* all rights reserved; see license.txt for details.
*/
public class Alarm implements Runnable {
public Alarm (int time, Alarmable target) {
this (time, target, null);
}
protected Alarmable target;
protected Object arg;
protected int time;
public Alarm (int time, Alarmable target, Object arg) {
this.time = time;
this.target = target;
this.arg = arg;
}
protected Thread alarm;
public synchronized void start () {
if (alarm == null) {
alarm = new Thread (this);
alarm.start ();
}
}
public synchronized void stop () {
if (alarm != null) {
alarm.interrupt ();
alarm = null;
}
}
public void run () {
try {
Thread.sleep (time);
synchronized (this) {
if (Thread.interrupted ())
return;
alarm = null;
}
target.alarmCall (arg);
} catch (InterruptedException ignored) {
}
}
}