Timer und TimerTask: Programm terminiert nicht!

Status
Nicht offen für weitere Antworten.

opal

Neues Mitglied
Hallo,

Ich habe eine Frage zu den Klassen Timer und TimerTask und hoffe ihr könnt mir helfen.

Ich habe ein Java Programm geschrieben, das mit einer Liste von zu erledigenden Aufgaben gestartet wird. Es gibt also eine Taskliste über die iteriert wird (Collection) und für jeden eintrag wird ein Task gescheduled. Das sieht dann vereinfacht so aus:

Code:
public class Scheduler { 

	public static void main (String[] args) {

		Tasklist tasklist = new Tasklist();

		while (tasklist.hasNext()) {
		
			Timer timer = new Timer();
			timer.schedule (new Task(),date);

		}

	}
}

Dann gibt es natürlich die Klasse Task, die sieht stark vereinfacht so aus:

Code:
public class Task extends TimerTask {

	public void run {

		// hier werden verschiedene andere Klassen aufgerufen 
		// und Berechnungen durchgeführt

		// wenn alles erledigt wird, soll der TimerTask gecancelt werden
		this.cancel();
	}
}

Und jetzt zu dem Problem: Obwohl ich den TimerTask cancel, terminiert das Programm nicht, wenn es alle Aufgaben ausgeführt hat.
Ich habe es auch auf einem anderen Weg versucht. Anstatt den TimerTask in der run-Methode zu canceln, habe ich den Timer, der ich erzeugt habe, als Daemon initialisiert.
Also so: Timer timer = new Timer(true);
Dann terminiert das Programm zwar, aber die run-Methode wird auch nicht ausgeführt.

Jetzt bin ich auch mit meinem Latein am Ende. Hat jemand eine Lösung?

Viele Grüße.
 
G

Guest

Gast
After the last live reference to a Timer object goes away and all outstanding tasks have completed execution, the timer's task execution thread terminates gracefully (and becomes subject to garbage collection).However, this can take arbitrarily long to occur. By default, the task execution thread does not run as a daemon thread, so it is capable of keeping an application from terminating. If a caller wants to terminate a timer's task execution thread rapidly, the caller should invoke the the timer's cancel method.
 

opal

Neues Mitglied
Anonymous hat gesagt.:
After the last live reference to a Timer object goes away and all outstanding tasks have completed execution, the timer's task execution thread terminates gracefully (and becomes subject to garbage collection).However, this can take arbitrarily long to occur. By default, the task execution thread does not run as a daemon thread, so it is capable of keeping an application from terminating. If a caller wants to terminate a timer's task execution thread rapidly, the caller should invoke the the timer's cancel method.

Ja, die Java API hab ich mir natürlich auch durchgelesen und gemacht, was da drin steht. Nur funktioniert das in meinem Fall leider nicht.
 
G

Guest

Gast
Verwende einen einzelnen Timer und zähle die Instanzen von TimerTask.
Wird der letzte Task "gecancelt", schiesst du auch den Timer ab.
Hier ein Beispiel (nur so auf die schnelle)
Code:
import java.util.TimerTask;
import java.util.Timer;

public class T
{
  static abstract class MyTask extends TimerTask
  {
    private static int instanceCount = 0;
    private static Timer timer = null;

    public MyTask(Timer t)
    {
      super();
      instanceCount++;
      timer = t;
    }

    public boolean cancel()
    {
      boolean result = super.cancel();
      if(--instanceCount == 0)
      {
        timer.cancel();
        timer = null;
      }
      return result;
    }
  }

  public static void main(String argv[])
  {
    final Timer t = new Timer();

    for(int i=10; i>0; i--)
    {
      t.schedule(new MyTask(t)
      {
        public void run()
        {
          System.out.println(System.currentTimeMillis());
          cancel();
        }
      }, 1000 * i);
    }
  }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Timer - Timertask endet nicht Allgemeine Java-Themen 4
V Frage zu util.Timer (-> TimerTask) Allgemeine Java-Themen 2
A TimerTask - Task stoppen - timer.cancel() funktioniert nicht Allgemeine Java-Themen 8
W Timer terminiert nicht Allgemeine Java-Themen 5
W Timer Konzept-Frage Allgemeine Java-Themen 16
Z Timer Allgemeine Java-Themen 5
H Timer funktioniert nicht? Allgemeine Java-Themen 3
Tacofan Kurzer Timer Allgemeine Java-Themen 22
B Threads Timer wird immer schneller Allgemeine Java-Themen 6
H Consumer (Java8 Lambda) an Timer übergeben Allgemeine Java-Themen 2
wolfgang63 Best Practice Taktgeber oder Timer mit variablem Intervall Allgemeine Java-Themen 1
I Timer Allgemeine Java-Themen 1
X Timer Allgemeine Java-Themen 3
C Timer? Allgemeine Java-Themen 8
X timer.schedule - Allgemeine Java-Themen 7
D Simpler Timer zum warten Allgemeine Java-Themen 19
H java.util.Timer und Funktion mit SQL Exception Allgemeine Java-Themen 5
G Threads Timer wird unterbrochen Allgemeine Java-Themen 20
P Java Timer Allgemeine Java-Themen 3
K Timer Thread Allgemeine Java-Themen 8
E Wie Timer anbringen mit Designer in Netbeans Allgemeine Java-Themen 5
M Ampelsteuerung über Timer in Java realisieren Allgemeine Java-Themen 3
O Timer pausieren Allgemeine Java-Themen 5
M Timer von nicht existiertem Objekt stopen Allgemeine Java-Themen 5
B util.Timer zu langsam? Allgemeine Java-Themen 3
P Java Timer Allgemeine Java-Themen 2
S Timer in Applet? Allgemeine Java-Themen 11
G Swing Timer führt Methode nicht aus Allgemeine Java-Themen 2
P Swing Eine Sekunde warten (Timer) Allgemeine Java-Themen 7
E Timer class macht einfach garnichts :/ Allgemeine Java-Themen 6
T Timer oder Alternative? Allgemeine Java-Themen 3
Z Timer -> Thread jeden Tag ausführen Allgemeine Java-Themen 5
D Probleme mit einem Timer Allgemeine Java-Themen 6
E Timer - gleichen Task mehrfach planen Allgemeine Java-Themen 2
D Timer oder Thread, das ist hier die Frage Allgemeine Java-Themen 3
S Problem mit einem Timer (Aktualisierung etc.) Allgemeine Java-Themen 2
B Timer übergabe Allgemeine Java-Themen 3
G Timer abbrechen und neu starten Allgemeine Java-Themen 3
G timer mit buttondruck abbrechen Allgemeine Java-Themen 7
T Timer oder ähnliches? Allgemeine Java-Themen 3
O Thread als Timer Interrupt Allgemeine Java-Themen 2
C Timer.scheduleAtFixedRate(). Allgemeine Java-Themen 5
H gibts in Java sowas wie in Visual Basic den Timer? Allgemeine Java-Themen 5
B 24 Uhr Timer Task Allgemeine Java-Themen 5
G Timer nur 64 mal pro Sekunde? Allgemeine Java-Themen 18
S Frage zu jTDS, JAVA allgemein und Timer Allgemeine Java-Themen 6
L Problem mit Timer Allgemeine Java-Themen 7
J Timer-Objekt / Task-Zustand ermitteln Allgemeine Java-Themen 5
M Verständnisfrage java.util.TimerTask Allgemeine Java-Themen 2
B TimerTask Allgemeine Java-Themen 1
L Missbrauch TimerTask? Allgemeine Java-Themen 2
D Update von TimerTask Allgemeine Java-Themen 13
T [TimerTask] Pause Allgemeine Java-Themen 5
K Scheduler und TimerTask Allgemeine Java-Themen 2
N class Task extends TimerTask ohne Blockieren Allgemeine Java-Themen 15
P Observer/TimerTask Allgemeine Java-Themen 3
G Mails aus TimerTask Allgemeine Java-Themen 6
F Problem mit TimerTask Allgemeine Java-Themen 5
Jose05 Umgang mit Exceptions in einen Programm Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
R Programm führt Methoden gleichzeitig aus Allgemeine Java-Themen 2
T Der Aufruf von CMD-Programm Allgemeine Java-Themen 30
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
Mike80 Processing Programm fiert ohne Arduino ein Allgemeine Java-Themen 2
B Mysteriöse Ergebnisse beim Baccarat Programm? Allgemeine Java-Themen 13
districon Programm zum Durchsuchen von (Ebay-)Artikeln Allgemeine Java-Themen 1
T Addons im eigenen Programm Allgemeine Java-Themen 1
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
S Formel für Sonnenwinkel in ein Programm überführen Allgemeine Java-Themen 11
Alex_99 Programm stürzt beim Aufruf der Funktion ab? Text ausgeben Allgemeine Java-Themen 45
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
Tiago1234 Warum hängt sich mein Programm auf? Allgemeine Java-Themen 22
D Programm designen Allgemeine Java-Themen 1
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
O 2D-Grafik BioFarben-Programm soll auf Vollbild schalten Allgemeine Java-Themen 1
S Nachrichten Filter Programm Allgemeine Java-Themen 14
S Programm schreiben, das mir aufgrund von Schlagwörtern, die ich im Internet suche, relevante Themen sofort anzeigt. Allgemeine Java-Themen 1
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
Lukas2904 Swing Anzeigen lassen das das Programm geschlossen wurde Allgemeine Java-Themen 3
TechnikTVcode Mail Programm Allgemeine Java-Themen 2
S Programm entwickeln, welches ein Dreieckspuzzle lösen kann Allgemeine Java-Themen 5
R Lesen von Interfaces (Programm Vervollständigen) Allgemeine Java-Themen 10
Dann07 Java-Programm findet DLLs nicht! Allgemeine Java-Themen 20
OSchriever Linux-Programm öffnen Allgemeine Java-Themen 6
P USER Management in SQL übergreifend auf JAVA Programm Allgemeine Java-Themen 41
L Eclipse Konsole im exportierten Programm Allgemeine Java-Themen 2
OSchriever Programm über Linux-Kommandozeile ausführen Allgemeine Java-Themen 20
D Verkauf von einem Programm welches ich in Java geschrieben habe Allgemeine Java-Themen 4
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3
P Erstelltes Programm ist doppelt so groß Allgemeine Java-Themen 11
N Programm nach Abschluss neustarten lassen Allgemeine Java-Themen 6
S Einfaches Programm programmieren Allgemeine Java-Themen 5
M kleines KI Programm Idee Allgemeine Java-Themen 7
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
I File ausführen und mein Programm bearbeiten lassen Allgemeine Java-Themen 11

Ähnliche Java Themen

Neue Themen


Oben