我用观察者模式实现了一个简单的计时器。我想在 main 函数运行 5 分钟后终止它。基本上我需要的是一个简单的一次性超时功能。我怎样才能做到这一点?我的代码不起作用。下面是定时器类
public class OneShotTimer extends Observable implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(30);
} catch (Exception e) {
// TODO: handle exception
System.out.println("Exception in timer");
}
notifyObservers();
}
在主类的构造函数中,我初始化了那个计时器。
public GreenOverlayMain(){
timer = new OneShotTimer();
timer.addObserver(this);
Thread t = new Thread(timer, "mythread");
t.start();
}
但是,主类的 update() 函数永远不会执行,因为永远不会发生超时。MainClass 实现了 Observer 接口。下面是更新功能。
@Override
public void update(Observable o, Object arg) {
// TODO Auto-generated method stub
System.gc();
System.exit(0);
}