2017-03-04 2 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(); 
    } 
} 

Dies ist mein Beispielprogramm. Ich habe ein paar Logiken, um das Rhythmusobjekt zu laden. In diesem Fall habe ich nur eine neue Instanz erstellt, bevor die Schleife für jede Schleife gestartet wird. Der Grund ist, dass ich eine Liste von Rhythmus-Objekten basierend auf einem JSON-Daten initialisiere. Also möchte ich den Prozess optimieren und die wiederholte IO-Operation zum Parsen der JSON-Daten innerhalb der Schleife vermeiden.TimerTask erweiterte Klasse schlägt bei Neuterminierung von Task mit java.util.Timer

Mein Problem ist die zweite Iteration der Schleife schlägt fehl und sagt TimeTask ist bereits geplant.

Bitte helfen Sie dies zu lösen.

+0

Ihre Code ist unvollständig ... wo ist die run-Methode in der TimerTask ??? –

+0

Hallo, ich habe es in meinem Code. Aber ich habe in diesem Thread verpasst. Das ist ein anderer Teil. Aber bitte sagen Sie mir, wie das Timer-Task-Zeitplan Problem zu lösen? –

Antwort

0

Ihr Code ist unvollständig ... ein Kind Klasse von Timertask die run-Methode implementieren müssen, Sie, dass hinzufügen müssen, auf der anderen Seite, können Sie keine Timer zweimal neu starten, so dass dieser Teil nicht korrekt:

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

vielleicht brauchen Sie Item-Objekt zu definieren, so dass sie ihre eigenen Timer, die Sie in der Schleife

beginnen können, wenn die Noten nicht mit dem Rythmus verwandt sind, dann können Sie tun:

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

Ich habe gerade diese foreach-Schleife als Beispiel hinzugefügt. Auch ich habe eine Laufmethode. Wenn ich in diesem Code erwähne, habe ich das nicht berücksichtigt. Das ist es. Können Sie bitte ein bisschen klar, wie dieses Problem behoben werden kann? –

+0

wir brauchen mehr Informationen über die Objekte in der Liste .... was sind das? Meinst du vielleicht ein Ryrhm auf jedem dieser Elemente in der Liste zu starten .. –

+0

ja genau. Das Listenobjekt ist nicht mit dem Rhythmus-Inhalt verknüpft. Zum Beispiel: Für jede Musiknote beginnt der Rhythmus. –

Verwandte Themen