IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Process continue à tourner malgré un System.exit(0)


Sujet :

Java

  1. #1
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    909
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 909
    Points : 1 360
    Points
    1 360
    Par défaut Process continue à tourner malgré un System.exit(0)
    Bonjour,

    Dans certains cas, quand j'arrête mon application via un System.exit(0), je vois dans mon IDE (NetBeans) qu'elle tourne encore. Le seul moyen de l'arrêter est de fermer l'IDE. Je ne vois pas trop comment faire pour repérer ce qui tournerait encore et l'arrêter.

    Quelqu'un saurait-il m'indiquer comment faire ?

    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2011
    Messages : 181
    Points : 519
    Points
    519
    Billets dans le blog
    1
    Par défaut
    Slt.
    Peut être qu'il te reste des process ou des thread en cours d’exécution même après l’appel de cette méthode si tu utilise linux, il ne faut oublier que sous linux, un processus fils peut rester en exécution même après la fin de l’exécution du processus père, il reste en état zambie.
    Bon courage

  3. #3
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    909
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 909
    Points : 1 360
    Points
    1 360
    Par défaut
    Citation Envoyé par mohamine1989 Voir le message
    Slt.
    Peut être qu'il te reste des process ou des thread en cours d’exécution même après l’appel de cette méthode si tu utilise linux, il ne faut oublier que sous linux, un processus fils peut rester en exécution même après la fin de l’exécution du processus père, il reste en état zambie.
    Bon courage
    Merci pour ta réponse.
    Je suis sous WinXP. Mais je pense que le problème doit être là, vu que j'interface avec une sorte d'usine à gaz (LibreOffice).
    Comment trouver ces thread-fils ?

  4. #4
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2011
    Messages : 181
    Points : 519
    Points
    519
    Billets dans le blog
    1
    Par défaut
    Il faut vérifier ton code pour t'assurer que tous les process et thread en terminer leurs exécutions avant l'appel de cette méthode.
    Tu peut par exemple utiliser un sémaphore.

  5. #5
    En attente de confirmation mail
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2010
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 501
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonjour,

    Il est possible que des threads tournent encore malgré l'arrêt du thread principal.
    Sous Windows pour s'en assurer, il faut utiliser jstack qui fait un stack dump de tous les threads.
    Les threads Daemon ne bloquent pas l'arrêt d'un programme, il faut donc chercher des threads non daemon dans le dump.
    En regardant la stack, vous devriez ensuite reconnaitre le framework ou la librairie qui est responsable de la création de ce thread, ça vous orientera pour voir comment provoquer proprement l'arrêt de ce thread.

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 977
    Points
    7 977
    Par défaut
    Citation Envoyé par lvr Voir le message
    Dans certains cas, quand j'arrête mon application via un System.exit(0), je vois dans mon IDE (NetBeans) qu'elle tourne encore. Le seul moyen de l'arrêter est de fermer l'IDE. Je ne vois pas trop comment faire pour repérer ce qui tournerait encore et l'arrêter.
    Tu es sure qu'il n'y a pas un souci avec le viewer de netbeans ? Parce que en théorie system.exit() il tue tout... sauf s'il reste bloqué avec les shutdown hook
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    909
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 909
    Points : 1 360
    Points
    1 360
    Par défaut
    Citation Envoyé par wax78 Voir le message
    Tu es sure qu'il n'y a pas un souci avec le viewer de netbeans ? Parce que en théorie system.exit() il tue tout... sauf s'il reste bloqué avec les shutdown hook
    Sûr que ce n'est pas le viewer. Car je démarre LibreOffice qui fait un lock des documents ouverts. Si je relance mon application, les fichiers sont toujours lockés de l'exécution précédente.

    Pour le moment, j'investigue au niveau de l'API de LibreOffice pour forcer une fermeture propre qui couperait tous ces threads qui tournent encore malgré le System.exit(0).

  8. #8
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par lvr Voir le message
    Pour le moment, j'investigue au niveau de l'API de LibreOffice pour forcer une fermeture propre qui couperait tous ces threads qui tournent encore malgré le System.exit(0).
    Non, System.exit tue tous les threads qui tournent. D'apres la javadoc, il arrete la machine virtuelle liée au programme.
    Par contre, ce que je comprends de ton texte, c'est que ce qui te fait croire que ca tourne, c'est la présence de fichiers lock. Or, c'est justement le fait de stopper le programme avec un System.exit qui tue tous les threads et ne leur permet donc pas de fermer proprement en liberant les ressources. Bref, comme tu l'as précisé, il vaut mieux trouver un moyen d'arreter proprement le programme plutot qu'un System.exit alors qu'un fichier est ouvert...

Discussions similaires

  1. Réponses: 88
    Dernier message: 30/10/2009, 08h41
  2. Réponses: 1
    Dernier message: 09/06/2008, 22h19
  3. Jfreechart +ApplicationFrame + System.exit
    Par wiss20000 dans le forum Langage
    Réponses: 28
    Dernier message: 29/05/2007, 14h59
  4. System.exit(0) 0 ?
    Par cyrano_de_bergerac dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 23/05/2007, 14h47
  5. [JFrame]System.exit() lors du clic sur la croix
    Par cyrill.gremaud dans le forum Agents de placement/Fenêtres
    Réponses: 21
    Dernier message: 17/08/2006, 10h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo