我只是在写一些代码,它发生在我身上。我正在创建一个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的方法来启动计时器。

当您可以仅构造对象然后立即开始计时时,解决种族问题似乎有点过头了。如果您有工厂来创建对象,则这可能是构建过程的一部分。

10-01 07:53
查看更多