2012-04-08 10 views
2

Ich habe eine Verpflichtung, so dass mein Programm annehmen wird für eine bestimmte Zeit zu laufen. Wie könnte ich einen Timer in Java so beibehalten, dass das Programm nur für nur 30 Minuten von der Programmausführung Startzeit läuft.Aufrechterhaltung einen Timer in Java

Antwort

2

Versuchen Sie, diese (wahrscheinlich im Hauptverfahren):

Timer t = new Timer(); 
t.schedule(new TimerTask() { 
    @Override 
    public void run() { 
    System.exit(0); 
    } 
}, 30*60000); 
+0

Thanks.This funktioniert, aber ich brauche die tatsächlichen Minuten von der Startzeit vergangen, als ich zusammen mit den verstrichenen time.If anderen Bedingungen andere Kontrollen durchführen muß und die verstrichene Zeit größer als die angegebenen Minuten, dann kann ich das Programm beenden. –

+2

Sie können die Startzeit des Programms speichern, indem Sie am Start Ihres Programms 'startTime = System.currentTimeMillis()' eingeben. Um herauszufinden, wie lange das Programm bereits läuft, tun '(System.currentTimeMillis() - Startzeit)/60000' – Richante

+0

Wenn Sie wollen (sagen wir) jede Minute überprüfen, ob das Programm zu beenden, können Sie den angezeigten Code ändern - ersetzen '30 * 60000' mit' 60000, 60000' (Aufgabe jede Minute wiederholen), und dann eine 'if'-Anweisung in 'run()', die die Bedingung überprüft, die ich im Kommentar angegeben habe, und was auch immer Sie wollen. 'startTime' sollte ein' final long' sein, das im selben Umfang wie 't' ist. – Richante

3

können Sie java.util.Timer verwenden, um die Zeit zu planen, wenn Ihr Programm stoppen muss. Wenn diese Zeit auftritt, müssen Sie dann mit Ihrem Haupt-Thread kommunizieren, dass das Programm nicht mehr ausgeführt werden soll (es sei denn, Sie möchten einfach System.exit anrufen).

+0

Danke.Dies funktioniert, aber ich nedd die tatsächlichen Minuten vergangen von der Startzeit, da ich andere Prüfungen alonwith die verstrichene Zeit durchführen müssen.Wenn andere Bedingungen und die verstrichene Zeit größer ist als die angegebenen Minuten, dann kann ich das Programm beenden. –

2

Wenn Sie eine Java-Version 1.5 oder höher verwenden, empfehle ich den Rahmen Testamentsvollstrecker verwenden. Insbesondere wird ein ScheduledExecutorService,

Executors.newSingleThreadScheduledExecutor().schedule(new Runnable(){ 
    @Override 
    public void run(){ 
     System.exit(0); 
    } 
}, 30, TimeUnit.MINUTES); 

Siehe auch Java Timer vs ExecutorService?.