以下代码改编自 Peter C. Dibble 在 Real-Time Java Platform Programming 中的一个示例:
import javax.realtime.*;
public class OSTimer {
static volatile boolean cont = true;
public static void main(String[] args) {
AsyncEventHandler handler = new AsyncEventHandler(){
public void handleAsyncEvent() {
System.out.println("Stopping...");
cont = false;
}
}
};
OneShotTimer timer = new OneShotTimer(new RelativeTime(3000, 0), handler);
timer.start();
while(cont){
System.out.println("Running");
if (timer.isRunning()) System.out.println("Timer is running");
try {
Thread.sleep(1000);
} catch(Exception e) { }
}
System.exit(0);
}
该程序应该运行 3 秒然后退出。然而,输出显示虽然计时器确实在 3 秒后停止,但程序照常继续,即输出为:
Running
Timer is running
Running
Timer is running
Running
Timer is running
Running
Running
Running......
显然处理程序没有触发,我不知道为什么。另一个涉及触发处理程序的周期性计时器的示例程序确实按预期工作。程序结构与这里的几乎相同。