2017-03-04 86 views
0
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(); 
    } 
} 

这是我的示例程序。我有一些逻辑来加载节奏对象。在这种情况下,我只展示了在每个循环开始之前创建一个新实例。原因是我正在初始化基于json数据的节奏对象列表。所以,我想优化这个过程并避免重复的IO操作来解析循环内部的json数据。TimerTask扩展类使用java.util.Timer重新计划任务失败

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

请帮忙解决这个问题。

+0

您码是不完整的...... TimerTask中的run方法在哪里? –

+0

嗨,我有我的代码。但我错过了这个线程。这是不同的部分。 但请告诉我如何解决计时器任务计划问题? –

回答

0

你的代码是不完整的...一个TimerTask的子类必须实现run方法,另一方面,你不能重新启动一个Timer两次,所以这部分是不正确的:

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

也许你需要定义项目目标,使他们有自己的定时器,你可以在循环开始

如果Notes不与节奏有关,那么你可以这样做:

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

我刚刚添加了foreach循环作为示例。另外我有一个运行方法。在此代码中提及时,我没有包括这一点。而已。 你能清楚一点如何解决timertask问题吗? –

+0

我们需要更多关于列表中的对象的信息....那些是什么?你的意思是,也许开始在列表中的这些元素的每个人ryrhm .. –

+0

是的。列表对象与节奏内容无关。例如说,对于每个音乐音符,节奏都会开始。 –