Fragen zum ShutdownHook

Status
Nicht offen für weitere Antworten.
S

scooterJava

Gast
In meiner main initialisiere ich einen ShutdownHook wie folgt:

Code:
	public static void main( final String[] saArgs )
	{
		if( 0 == saArgs.length )
		{
			SwingUtilities.invokeLater( new Runnable()
				{
					public void run()
					{
						// Create thread to be executed at exit.
						Runtime.getRuntime().addShutdownHook( new Thread()
							{
								@Override
								public void run()
								{
									terminateApp();
								}
							} );
			// ... weiterer Code ...
		}
	}

Die Methode terminateApp() hat folgenden Inhalt:

Code:
	protected static void terminateApp()
	{
		System.out.println( "SHUTDOWN" ); // Testausgabe
		// ...
		// Method calls ...
		// ...
		showWarning( null, "ENDE" ); // Testausgabe, zeigt eine JOptionPane mit Text an
	}

Der Hook funktioniert soweit, allerdings nur bis zum println(); der Rest wird nicht beachtet. Ich weiß, dass im Hook nur das Nötigste für Aufräumarbeiten stehen soll, und später soll hier nur noch eine Methode oder Klasse aufgerufen werden. Aber wieso wird nach println() alles ignoriert?
 

Murray

Top Contributor
scooterJava hat gesagt.:
Aber wieso wird nach println() alles ignoriert?
Wird es nicht. Das "Geheimnis" liegt wohl in den hier nicht geposteten Codezeilen; da könnte z.B. eine Exception auftreten.

Versuch es doch mal so:
Code:
   protected static void terminateApp()
   {
      try {
        /* ... */
      }catch ( Exception e) {
         e.printStackTrace();
      }
   }

Ob es allerdings eine gute Idee ist, im Shutdown-Hook noch eine JOptionPane hochzubringen, wage ich zu bezweifeln.
 
S

scooterJava

Gast
Nein, Exceptions können hier nicht auftreten, da die Methode bei mir so steht, wie angegeben (der Kommentar ist also wirklich ein Kommentar und kein Platzhalter für Methoden, die ich nicht angeben wollte).

Ich arbeite mit Eclipse 3.3.4 (Java 5). Dabei fällt mir auf, dass Eclipse die Anwendung laufen lässt (erkennbar an dem roten Quadrat in der Console, das man drücken kann zum Terminieren), nachdem er println ausgeführt hat. Auf die GUI kann ich aber nicht mehr zugreifen. Offenbar ist hier also der sichtbare Teil des Programms beendet (was erklären dürfte, warum die JOptionPane nicht mehr angezeigt wird), nur eben nicht alles. Der Debugger springt auch in showWarning hinein und führt die Methode aus (leider ohne Anzeige), stoppt danach aber, wobei in Eclipse wie gesagt ersichtlich ist, dass das Programm nocht nicht gänzlich beendet ist.
 

Illuvatar

Top Contributor
1.) Das SwingUtilities.invokeLater müsstest du da eigentlich weglassen können.

2.) Du kannst im ShutdownHook keine JOptionPane mehr anzeigen. Der ShutdownHook hat vielleicht ein paar Millisekunden um ausgeführt zu werden, wenn er dann noch läuft wird er eben abgebrochen. Anders gesagt: In deinem Fall wird der Thread vermutlich schon abgebrochen, bevor die JOptionPane auch nur angezeigt wird (das ist eine relativ zeitaufwändige Sache).
 
S

scooterJava

Gast
(1) SwingUtilities.invokeLater habe ich einfach mal so aus Sun-Beispielen übernommen. Dachte mir, könnte nicht schaden. Zudem brauche ich das erstellte Runnable-Objekt, da eine Logger-Methode darauf referenziert.

(2) Die Vermutung könnte tatsächlich zutreffen. Später soll im Code von terminateApp() einfach nur ein Prozess (eine andere Anwendung) initialisiert und gestartet werden. Im Gegensatz zu einem aufwändigen GUI-Aufbau wie bei einer JOptionPane müsste dies zügig zu erledigen sein, bevor sich die VM verabschiedet ... Hat jemand Erfahrung mit Programmaufrufen im Hook-Thread?
 

Murray

Top Contributor
scooterJava hat gesagt.:
Nein, Exceptions können hier nicht auftreten, da die Methode bei mir so steht, wie angegeben (der Kommentar ist also wirklich ein Kommentar und kein Platzhalter für Methoden, die ich nicht angeben wollte).
Trotzdem könnte ja aber in showWarning eine Exception aufgetreten sein. Aber vermutlich wird das wirklich nicht das Problem sein.

Ob der Aufruf einer externen Anwendung noch funktioniert, ist sicher auch nicht unbedingt garantiert - das wäre auszuprobieren; verlassen würde ich mich darauf aber eher nicht.
 

didjitalist

Bekanntes Mitglied
wenn shutdown hooks gerufen werden, ist der awt event dispatcher schon lange abgeschossen worden. man kann sich nichteinmal mehr drauf verlassen, dass System.out noch rausgetreten wird. shutdown hooks können z.b. resourcen freigeben, aber sie sollten immer davon ausgehen, dass das system bereits "runtegefahren" ist.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Fragen zu Testabdeckungs-Metriken Allgemeine Java-Themen 4
MarvinsDepression Unbekanntes Zeichen in fremden Code wirft Fragen auf Allgemeine Java-Themen 4
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
K BlueJ - Fragen zu dem Spiel Pacman (Nachprogrammieren) Allgemeine Java-Themen 141
V Ich hätte 2 Fragen Allgemeine Java-Themen 5
ME2002 Fragen aus einer Java Klausur Allgemeine Java-Themen 67
H Fragen zur Kraken Api Allgemeine Java-Themen 1
nonickatall Klassen Grundsätzliche Fragen zu geplanter Programmstruktur Allgemeine Java-Themen 5
W Ein paar Fragen zu .properties und .css Allgemeine Java-Themen 6
W Mal ein paar generelle Fragen zu InputStream und OutputStream Allgemeine Java-Themen 4
X Fragen zur Javamail API und Gmail Allgemeine Java-Themen 4
T Fragen bezgl. Lambdas Allgemeine Java-Themen 20
X Collections Fragen zu gleichen Elementen in TreeSet Allgemeine Java-Themen 35
A Neuerungen in Java 8 StreamAPI- Paar fragen Allgemeine Java-Themen 4
temi Fragen zur Software-Architektur Allgemeine Java-Themen 123
M Diverse Design-Fragen Allgemeine Java-Themen 6
J 2 Fragen zur Vererbung Allgemeine Java-Themen 5
H Java FX 2 Fragen um Programm in mehrere sprachen zu übersetzen in Gluon Framwork Allgemeine Java-Themen 3
M Fragen beantworten über Textfeldeingabe Allgemeine Java-Themen 5
D Grundsätzliche Fragen zum Heap Space Allgemeine Java-Themen 12
J Allgemeine Fragen zu Vererbung Allgemeine Java-Themen 1
M Allgemeine Fragen meinerseits Allgemeine Java-Themen 4
V Wie kann ich die Fragen mit den anderen Klassen verbinden? Allgemeine Java-Themen 1
J Fragen zu generischer doppelt verketteter Liste (bei fehlendem Grundverständnis) Allgemeine Java-Themen 1
R Es gibt keine dummen Fragen (hab ich mal gehört) Allgemeine Java-Themen 11
T Fragen zum Thread-Thema Allgemeine Java-Themen 4
2 2 Klein Fragen Allgemeine Java-Themen 7
alderwaran .jar Code Signing, User-Keystore und Fragen dazu Allgemeine Java-Themen 0
T Fragen zum Thread-Thema Allgemeine Java-Themen 9
A Java Theorie-Fragen Allgemeine Java-Themen 7
K Java QUIZ-Spiel Fragen und Antworten generieren?! Allgemeine Java-Themen 5
R Socket Fragen zu UDP Allgemeine Java-Themen 1
B Noob-Fragen zu Tablets und PC kompatiblität... Allgemeine Java-Themen 6
D Ein paar allgemeine Fragen zu Java Allgemeine Java-Themen 19
L Fragen für Facharbeit: Analyse von Strings in Java Allgemeine Java-Themen 4
R Fragen zu Server + UI Allgemeine Java-Themen 2
U Vier Fragen zu Java Allgemeine Java-Themen 2
H MediaManager Fragen/Probleme Allgemeine Java-Themen 6
D Fragen zum erstellen einer ausführbaren Jar Datei Allgemeine Java-Themen 3
C Polymorphie Fragen zur Annotations von Persistenz Allgemeine Java-Themen 2
O Fragen über Fragen - Bei Änderung XML-Datei -> Anpassung GUI Allgemeine Java-Themen 7
StrikeTom Java Performance Fragen Allgemeine Java-Themen 5
Luk10 Fragen zum ByteBuffer (lwjgl - icons) Allgemeine Java-Themen 2
F Akkumulator Hough-Transformation offene Fragen Allgemeine Java-Themen 4
Luk10 Fragen zu Naming-Conventions Allgemeine Java-Themen 5
Z Einige Fragen Allgemeine Java-Themen 10
T OOP Einige Fragen zu UML-Klassendiagrammen Allgemeine Java-Themen 6
G Einige Fragen zu ResourceBundles Allgemeine Java-Themen 2
S Fragen zu verschiedenen Themen vom JCreator Allgemeine Java-Themen 2
DStrohma Grundsätzliche Fragen zum Aufbau eines komplexeren Programmes Allgemeine Java-Themen 8
Semox Grapheneditor - Allgemeine Fragen zum Logikdesign Allgemeine Java-Themen 3
O kleine Fragen eines Anfängers Allgemeine Java-Themen 2
X Executor fragen ob fertig Allgemeine Java-Themen 13
nrg Swing 2 Fragen zu Swing/AWT Allgemeine Java-Themen 7
K Reflections Fragen Allgemeine Java-Themen 7
S Fragen zum SCJD-Zertifikat Allgemeine Java-Themen 2
M Backend Entwicklung - Konzept fragen Allgemeine Java-Themen 3
E Fragen zu Scala Allgemeine Java-Themen 11
Daniel_L Fragen zu RegEx und URL umwandeln Allgemeine Java-Themen 4
J Diverse Fragen bezüglich Jasper Allgemeine Java-Themen 3
V Fragen zu einem Java Browser Allgemeine Java-Themen 7
G Fragen zum eigenen Scheduler Allgemeine Java-Themen 4
M Drag and Drop: 3 Fragen Allgemeine Java-Themen 3
L Einige Fragen zu Java Allgemeine Java-Themen 9
F Linguistische Fragen zu Javadoc bzw. Englisch Allgemeine Java-Themen 4
E Einfache Fragen zu Dateien Allgemeine Java-Themen 7
E Thread Fragen in Verbindung mit Swing Allgemeine Java-Themen 4
M MVC Design Pattern - Verständniss Fragen Allgemeine Java-Themen 3
X Einige Fragen zu Serialisierung Allgemeine Java-Themen 2
H Java Multiplicoice Test (10 Fragen) Allgemeine Java-Themen 11
J Viele Fragen. =) Hoffentlich könnt ihr helfen Allgemeine Java-Themen 9
D Grundsätzliche Fragen zur Grafikdarstellung in Spielen Allgemeine Java-Themen 2
J 2 Fragen zu JMF und eine Rechtsfrage Allgemeine Java-Themen 3
S Viele Fragen eines Umsteigers (von .NET) Allgemeine Java-Themen 6
C LinkedList Fragen Allgemeine Java-Themen 7
P Fragen zur JBuilder und den kosten. Allgemeine Java-Themen 7
reibi JVM fragen welche Apps geladen sind Allgemeine Java-Themen 7
I Fragen zum Internetseiten Einlesen/Auswerten Allgemeine Java-Themen 5
F Paket und Software Design Fragen. Allgemeine Java-Themen 5
S 2 Fragen allgemeine fragen zu final und interface Allgemeine Java-Themen 13
M ein paar fragen über JBoss und Catalina Allgemeine Java-Themen 7
D Allgemeine Fragen zum Speichern Allgemeine Java-Themen 3
F allgemeine Fragen zu Java Allgemeine Java-Themen 9
S Fragen zu 4 speziellen Listen Allgemeine Java-Themen 4
U JFrame, JOptionPane - vor dem Schließen Benutzer fragen Allgemeine Java-Themen 10
I zwei simple fragen Allgemeine Java-Themen 22
G 2 Fragen Allgemeine Java-Themen 7
G Fragen zu ausführbaren JAR Files Allgemeine Java-Themen 23
G Fragen zu JTextField bzw. JTextArea Allgemeine Java-Themen 2
J 5 Fragen. Allgemeine Java-Themen 2
P Tausend Fragen... Allgemeine Java-Themen 3
hdi Komisches Problem mit ShutdownHook + SystemTray Allgemeine Java-Themen 23
T ShutdownHook Allgemeine Java-Themen 14
A An alle Cracks: Anwendung beenden mit ShutdownHook? Allgemeine Java-Themen 13
A Problem mit ShutdownHook beim schließen Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben