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

Langage Java Discussion :

Que se passe t il quand j'interromps manuellement mon programme?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 190
    Par défaut Que se passe t il quand j'interromps manuellement mon programme?
    Salut,


    J'ai un programme qui fait de gros calculs et donc il consomme beaucoup de temps.

    Parfois, j'ai envie d’interrompre mon programme avant la fin. Mais j'ai envie d'avoir quelques information sur ce qui s'est passé. Par exemple, j'aimerai connaitre la quantité de donner qui ont été traitées.

    Pour cela, quand je suis sous Eclipse, je clique sur le 'bouton rouge'. Dans les autres contextes, je fait un 'Ctl C'.

    Comment puis-je savoir dans mon code qu'une telle action a eu lieu? Y-a-t-il un lien avec l'InterruptedException?

    Merci de votre aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Par défaut
    L'InterruptedException est un moyen de notifier à une thread suspendue (ex: on a appelé Thread.sleep()) qu'on a changé quelque chose pendant qu'elle "dormait". Cette exception est déclenchée par l'appel de la méthode Thread.interrupt() par une autre thread. Pas de lien donc avec le kill sauvage du process.
    Les shutdown hooks de la JVM permettent peut-être de faire quelque chose, mais sans garantie...

    Pour moi, le meilleur moyen de savoir où en était ton programme reste d'avoir des logs bien pensés (sans garantie que tu aies le dernier état juste avant le kill, tu auras l'état au moment du dernier appel de log en date), et/où si tu as des résultats intermédiaires enregistrés d'analyser l'état des données.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    Citation Envoyé par therwald Voir le message
    Les shutdown hooks de la JVM permettent peut-être de faire quelque chose, mais sans garantie...
    On ne peut rien contre un vrai gros kill sauvage, c'est sûr... Et apparemment c'est ce que fait le bouton rouge d'Eclipse.

    Mais pour les trucs comme le ctrl+C et autre kill simple, ça peut être repéré (mais pas annulé) par Runtime.getRuntime().addShutdownHook(hook);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Mais pour les trucs comme le ctrl+C et autre kill simple, ça peut être repéré (mais pas annulé) par Runtime.getRuntime().addShutdownHook(hook);
    Du coup ça doit pouvoir être utilisé pur répondre à la question: préparer un aprçu de l'état du programme au moment de l'interruption...
    Comment la JVM gère-t-elle les hook "rebelles"? Time-out kill? Ca dépend peut-être de la JVM en question?
    EDIT: ceci dit je me demande si ça vaut le coup de faire aussi compliqué pour ce que de simples logs bien choisis permettraient de faire avec une assez bonne précision...

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Par défaut
    Après avoir visité mon ami google, les shutdownhooks:
    1) ne garantissent rien
    2) globalement ont intérêt à travailler plutôt vite
    3) doivent être écrits très précautionneusement car la période de fermeture d'une JVM n'est pas forcément un moment où l'environnement est stable

    cf ici: http://download.oracle.com/javase/1....lang.Thread%29

    Globalement, je pense que plutôt que de chercher à détecter la fermeture et vite essayer de préparer un résumé des traitements & co, LGNord devrait compter sur des logs qui retracent au fur et à mesure l'avancement. Il suffit de trouver le bon compromis entre précision des indication et consommation de ressources (surtout espace disque, d'ailleurs) par les logs.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 190
    Par défaut
    Super. Merci beaucoup pour vos réponses.

    Je ne me suis pas encore lancé dans les logs car j'ai une crainte: celui de dimuner les performances de mon application.

    Par exemple, je kill mon application aprés 5 minutes. Mon log m'indique que 3% de mes données ont été traitées. Que conclure de cette information? Peut-être que 90% du temps a été passé dans le code qui gére le log.

    Comme vous l'avez bien dit, j'ai besoin d'un system de logs bien pensés...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/03/2012, 08h46
  2. Que se passe-t-il quand on clique le bouton précédent?
    Par Invité dans le forum Webdesign & Ergonomie
    Réponses: 2
    Dernier message: 24/02/2009, 02h30
  3. [AJAX] Que se passe t'il quand une requête est envoyé ?
    Par whitespirit dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 31/07/2008, 09h28
  4. que se passe t il quand ...
    Par -<R1>- dans le forum Débuter
    Réponses: 2
    Dernier message: 28/06/2004, 15h00
  5. [VB6] [Install] Que se passe-t-il lors du setup?
    Par petit scarabée dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 28/10/2002, 09h26

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