2012-03-28 16 views
0

Ich habe, ein Spiel Bot, die durch die Konsole läuft. Ich glaube nicht, dass ich ein GUI dafür schreiben werde, aber ich möchte die Möglichkeit haben, das Programm ohne STRG + C zu schließen, weil dies nur mein Programm unterbricht, anstatt den Code richtig zu bereinigen und sicherzustellen, dass es keine Lecks gibt .Java-Konsole Anwendung aufräumen

Sollte ich irgendeine Art von Key Bindings verwenden oder bin ich gebunden, eine GUI erstellen? Oder wie könnte ich darüber gehen?

+1

Antwort hier? - http://stackoverflow.com/questions/1216172/java-how-could-i-intercept-ctrlc-in-a-cli-application –

Antwort

5

Ich denke, das ist, was ein shutdown hook ist.

Runtime.getRuntime().addShutdownHook(new Thread() { 
    @Override 
    public void run() { 
     System.out.println("Application shutdown"); 
    } 
}); 
+0

Sweet. Ich wusste nichts davon. Vielen Dank! ;) –

+0

Irgendeine Idee, wie das beim Beenden der Anwendung über Eclipse funktionieren würde (während der Entwicklung)? – Michael

1

Davids Antwort ist gut. Es kann gut für dich arbeiten.

Ich bevorzuge es im Allgemeinen, einen Prozess nicht absichtlich abzubrechen und dann zu erkennen, dass er herunterfährt, um die dangling-Operationen zu vermeiden. Also würde ich wahrscheinlich mehr tun wie:

Verarbeiten Sie Konsoleneingaben, wie sie eingegeben werden? Wenn dies der Fall ist, könnten Sie einfach einen Konsolenbefehl haben, der der App sagt, dass sie herunterfahren soll, und dies in jedem Prozess überprüfen, der mit den Konsoleneingaben zu tun hat. Oder wenn Sie meinen, dass die App nur ohne Benutzereingaben ausgeführt wird, können Sie regelmäßig überprüfen, ob der Konsolenpuffer leer ist (Console.reader(). Ready()). Wenn nicht, lesen Sie die Konsole und sehen Sie, ob sie beendet wird Befehl.