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 :

Tracer les interruptions


Sujet :

Java

  1. #1
    Membre confirmé Avatar de lunart
    Homme Profil pro
    Administrateur système et réseau
    Inscrit en
    Décembre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur système et réseau

    Informations forums :
    Inscription : Décembre 2003
    Messages : 79
    Par défaut Tracer les interruptions
    Bonjour

    Je ne voit pas comment faire en sorte que lorsqu'il y a une interruption le programme me notifie de quel à quel thread il est passé.
    Je souhaiterai avoir une suite d'instructions qui s'effectue dès qu'il reprend la main sur un thread ou dès qu'il la perd.

    Est-ce possible? Après c'est sur que ce bout de code devra contenir des waits pour ne pas que mon programme tourne en boucle sur ces bouts de code si jamais les interruptions sont trop rapides.

    Merci de votre aide

    Pierre

  2. #2
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    Je ne suis pas sur d'avoir compris, mais si tu veux la pile d'exécution, tu peux faire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    public void getStack(Exception e) {
            // Get the stack trace
            StackTraceElement stack[] = e.getStackTrace();
     
            // stack[0] contains the method that created the exception.
            // stack[stack.length-1] contains the oldest method call.
            // Enumerate each stack element.
            for (int i=0; i<stack.length; i++) {
                String filename = stack[i].getFileName();
                if (filename == null) {
                    // The source filename is not available ...
                }
                String className = stack[i].getClassName();
                String methodName = stack[i].getMethodName();
                boolean isNativeMethod = stack[i].isNativeMethod();
                int line = stack[i].getLineNumber();
                ....
            }
        }
    }

  3. #3
    Membre confirmé Avatar de lunart
    Homme Profil pro
    Administrateur système et réseau
    Inscrit en
    Décembre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur système et réseau

    Informations forums :
    Inscription : Décembre 2003
    Messages : 79
    Par défaut
    Ce que je souhaiterai en effet c'est une sorte de stack trace personnalisée où au lieu de donner le nom des méthodes on donne un attribut de notre thread par exemple son nom.

    De plus il faudrait que cette execution s'effectue à chaque interruption et non lorsqu'une exception est levée comme ça a l'air d'être le cas dans le bout de code que tu m'as donné.
    J'entends par interruption à chaque fois que le processeur donne la main à un autre thread.

  4. #4
    Membre expérimenté Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Par défaut
    En fait ce que tu veux savoir c'est a quel moment ton thread est en cours d'execution et a quel moment il est mit en stand by par ton processeur c'est ca ??

  5. #5
    Membre confirmé Avatar de lunart
    Homme Profil pro
    Administrateur système et réseau
    Inscrit en
    Décembre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur système et réseau

    Informations forums :
    Inscription : Décembre 2003
    Messages : 79
    Par défaut
    En gros oui.
    Pour être plus exact je veux savoir lequel est en activité.

    Et pour ce faire dès qu'il est remis en activité je souhaiterai executer un bout de code avec un System.out.println du nom de mon thread.

  6. #6
    Membre expérimenté Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Par défaut
    La liste des threads se trouve dans une pile d'execution je ne sais pas comment la recuperer.

  7. #7
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Avec Java 5.0 tu peux monitorer les threads avec la classe ThreadMXBean et récupérer leurs états :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            ThreadMXBean bean = ManagementFactory.getThreadMXBean();
     
            for (ThreadInfo threadInfo : bean.getThreadInfo(bean.getAllThreadIds())) {
                System.out.printf( 
                        "%25s : %s \n",
                        threadInfo.getThreadName(),
                        threadInfo.getThreadState()
                        );
            }
    Par contre je ne pense pas que tu puisses gérer les interruptions de threads...

    a++

  8. #8
    Membre confirmé Avatar de lunart
    Homme Profil pro
    Administrateur système et réseau
    Inscrit en
    Décembre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur système et réseau

    Informations forums :
    Inscription : Décembre 2003
    Messages : 79
    Par défaut
    Merci je vais tester.

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

Discussions similaires

  1. tracer les connexions web sur un serveur
    Par lutin511 dans le forum Développement
    Réponses: 2
    Dernier message: 28/06/2004, 23h36
  2. Les interruptions + ring 0 ?
    Par MonsieurAk dans le forum x86 32-bits / 64-bits
    Réponses: 12
    Dernier message: 29/09/2003, 08h51
  3. Les interruptions sous Windows et Linux
    Par Descartes dans le forum x86 32-bits / 64-bits
    Réponses: 7
    Dernier message: 07/06/2003, 22h42
  4. Tracer une ligne droite sans les interruptions
    Par Stef784ever dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 25/11/2002, 01h22

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