我只是在写一些代码,它发生在我身上。我正在创建一个Timer对象,并通过timer.scheduleAtFixedRate(...)
安排重复任务。
public class MyClass {
..
public MyClass() {
Timer timer = new Timer(true);
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
doStuffEachSecond();
}
}, (long)0, (long)1000);
// more stuff
}
现在,
doStuffEachSecond()
是MyClass
的实例方法。由于我的初始延迟是零,并且在设置好我的Timer之后,构造函数中还有很多事情在进行,我如何知道在对象初始化完成之前不会发生我的Timer的第一次调用?还是可能是这种情况(当然那不是很好)?
现在,我的解决方案是定时器的设置是构造函数的最后一步,但这充其量似乎还不够。关于这个问题有什么智慧吗?
最佳答案
我将使用类似于Java线程的功能。有一个构造函数,然后调用类似start
的方法来启动计时器。
当您可以仅构造对象然后立即开始计时时,解决种族问题似乎有点过头了。如果您有工厂来创建对象,则这可能是构建过程的一部分。