2017-03-04 62 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

是的。列表對象與節奏內容無關。例如說,對於每個音樂音符,節奏都會開始。 –