Java arrêt crochet
J'ai ajouté le code suivant à mon programme:
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
@Override
public void run() {
System.out.println("exit");
}
}){});
Cependant je ne vois pas le message. Informations supplémentaires: je suis en cours d'exécution du programme à partir de l'intérieur de l'EDI Netbeans.
EDIT: j'ai oublié d'ajouter qu'il y a un mondial de Fil qui maintient le programme de vivant. Je le fermer en appuyant sur la touche [x] dans Netbeans coin inférieur droit.
Pourrait le downvoter veuillez expliquer pourquoi c'est une mauvaise question?
Quelle est la version de Java que vous utilisez?
Ajouté les informations manquantes, l'exécution de Java 7.
Essayez de lui envoyer un
Notez que le
Quelle est la version de Java que vous utilisez?
Ajouté les informations manquantes, l'exécution de Java 7.
Essayez de lui envoyer un
SIGHUP
le processus Java (kill -1 <pid>
) au lieu de cliquer sur un bouton de l'INTERFACE utilisateur. en.wikipedia.org/wiki/Unix_signal#POSIX_signalsNotez que le
{}
est inutile. Il crée en fait un anonyme intérieure sous-classe de Thread
.
OriginalL'auteur skiwi | 2013-10-28
Vous devez vous connecter pour publier un commentaire.
La JVM peut d'arrêt soit ordonnée ou de façon brusque. Un arrêt crochet court pour un arrêt normal: lorsque la dernière
normal
thread se termine, quelqu'un appelleSystem.exit
ou par d'autres plate-forme de moyens spécifiques (par exemple en tapant Ctrl-C).Arrêt crochets ne fonctionnera pas pour un arrêt soudain de la JVM. Tant que vous appuyez sur [x] dans Netbeans coin inférieur droit, cela va provoquer un brusque arrêt de la JVM et c'est pourquoi la fermeture crochet n'a pas été démarré.
Par exemple :
}
Si vous exécutez le code ci-dessus, et de laisser le programme se terminer normalement, vous verrez
exit
imprimé sur la console. Mais si vous appuyez sur [x] (dans les 3 secondes) pour le fermer brusquement, l'arrêt du crochet ne fonctionne pas, et il n'y aura pasexit
imprimé sur la console.vous pouvez utiliser
System.exit(0);
dans le code à l'arrêt de votre programme.Le programme est un programme qui doit réagir lorsque des fichiers sont ajoutés à un dossier particulier, donc je crains que ça doit être en cours d'exécution pour toujours. Encore besoin de quelques façon de bien l'arrêter en cas de maintenance.
lorsque vous tapez ctrl+c sur console, la fermeture crochet s'exécuter. et si vous avez une INTERFACE utilisateur, vous pouvez utiliser
System.exit(0);
.OriginalL'auteur Debojit Saikia
Eh bien ça y est, le programme de fermeture par un "x" dans netbeans coin inférieur droit n'est pas régulière arrêter, c'est juste casse tout arrêter.
ShutdownHook fonctionne uniquement lorsque le programme régulièrement des sorties...
OriginalL'auteur libik