2017-03-04 8 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データに基づいてリズムオブジェクトのリストを初期化しているからです。そこで、私はプロセスを最適化し、ループ内のjsonデータを解析するための繰り返しIO操作を避けたいと思います。TimerTask拡張クラスがjava.util.Timerを使用してタスクの再スケジュールに失敗する

私の問題は、ループの2番目の反復が失敗し、TimeTaskが既にスケジュールされているということです。

この問題の解決に役立ちます。

+0

あなたコード不完全です... TimerTaskのrunメソッドはどこですか? –

+0

こんにちは私は自分のコードでそれを持っています。しかし、私はこのスレッドで逃した。それは別の部分です。 しかし、タイマーのタスクスケジュールの問題を解決する方法を教えてください? –

答えて

0

あなたのコードは不完全です... TimerTaskの子クラスはrunメソッドを実装する必要がありますが、もう一方はTimerを2回再起動できないため、この部分は正しくありません。

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

は、多分あなたは、あなたが行うことができます彼らはノートをリズムに関連していない場合は、ループ内で

を開始することができ、独自のタイマーを持っているので、アイテムオブジェクトを定義する必要があります。

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

foreachループをサンプルとして追加しました。また、私はrunメソッドを持っています。このコードで言及するとき、私はそれを含めなかった。それでおしまい。 timertaskの問題を解決する方法を教えてください。 –

+0

リスト内のオブジェクトに関する詳細情報が必要です....それらは何ですか?あなたはおそらく、リスト内のそれらの要素のすべてについてryrhmを開始することを意味するのですか。 –

+0

はい正確です。リストオブジェクトは、リズムコンテンツとは関係ありません。例えば、各楽譜のリズムが始まります。 –

関連する問題