TimerTask extended class 使用 java.util.Timer 重新安排任务失败

TimerTask extended class fails on rescheduling of Task using java.util.Timer

class Rhythm extends TimerTask
{
  private java.util.Timer SegmentTimer; 
  pubic void start()
  {
    this.Segmenttimer = new Timer(true);
    Segmenttimer.scheduleAtFixedRate(this, 0, 1000);
  }
  public void run() {}
  public void stop()
  {
    this.SegmentTimer.Cancel();
  }
}

class Program
{
  Rhythm rhythm = new Rhythm();

  for (item : List)
  {
    rhythm.start();
  }
}

这是我的示例程序。我有一些逻辑来加载节奏对象。在这种情况下,我只是展示了在 for each 循环开始之前只创建一个新实例。原因是我正在根据 json 数据初始化节奏对象列表。所以,我想优化流程,避免循环内解析json数据的重复IO操作。

我的问题是循环的第二次迭代失败,并说 TimeTask 已经安排好了。

请帮忙解决这个问题。

您的代码不完整...TimerTask 的子 class 必须实现 运行 方法,您需要补充一点,另一方面,您不能重新启动 Timer 两次,所以这部分不正确:

for (item : List) {
    rhythm.start();
  }

也许您需要定义项目对象,以便它们有自己的计时器,您可以在循环中启动它

如果音符与节奏无关那么你可以这样做:

for (item : List) {
    rhythm = new Rhythm();
    rhythm.start(); 
}