我有一个静态,定期,Java Timer/TimerTask,我想在应用程序时关闭。我不希望应用程序挂起,因为某些线程仍在运行(例如,在Eclipse中的调试模式下发生的情况,某些环境可能会杀死它)。我使用static的原因是我打算在Timer的所有包含类的实例中都有一些(非常简单,可能只是一个计数器)共享内存,所以我觉得类范围是合适的。Java静态TimerTask关机
我的问题是如何最好地关闭计时器?这是一个适当的时间来使用finalize?这个计时器看起来是否足够好以至于有一个非确定性调用来完成可能会起作用?可能需要做某种实例计数来验证该类中不再有任何实例吗?欢迎有关如何管理静态计时器关机的建议。
伪代码:
class foo {
private static Timer someTimer = null;
public foo() {
if(someTimer == null) {
someTimer = new Timer(new TimerTask(...));
}
}
//how should I shut this thing down?
protected void finalize() throws Throwable {
}
//or is better to have shutdown() called explicitly?
}
良好的答案(+1)。 – 2012-04-27 02:32:45