Comment trouver un fil de java à l`exécution

L`art de trouver les discussions à l`exécution implique deux classes Java, Thread et ThreadGroup. En outre, vous devez vous rappeler le nom de votre fil lorsque vous le créez. Sinon, si vous ne nommez pas votre fil, vous comptez sur le mécanisme de nommage par défaut pour les fils intégrés à Java, et alors que vous pourriez être en mesure de deviner ce que le nom de fil devrait être, il n`y a aucune garantie que cela sera le même nom à travers toutes les plates-formes d`exécution et les versions Java.

Choses que vous devez

  • Java Runtime Environment version 6 ou supérieur
  • Créer le cadre d`une classe d`application Java nommée "Trouver." Il suffit de fournir une méthode vide principale () comme point de départ.

    public class Recherche {

    static void main (String args []) public {

    }

    }

  • Créer un objet Runnable et discussion de sorte que vous avez quelque chose à trouver. Nommez le fil "Dormeur" en fournissant un second argument du constructeur de fil, où le premier argument est la référence Runnable. Après avoir créé le fil, le démarrer en appelant sa méthode start (). Le code suivant commence la principale maintenant vide définition de la méthode ():

    runner Runnable = new Runnable () {

    public void run () {

    Essai {

    Thread.sleep (50000);

    } Catch (InterruptedException e) {

    // ignorer

    }

    }




    };

    Discussion t = new Thread (coureur, "Dormeur");

    t.start () -

  • Trouver le fil à l`aide de ThreadGroup. Tous les sujets appartiennent à un ThreadGroup. Ces groupes sont assis dans un arbre où tous les groupes ont un noeud parent (et nœuds enfants), à l`exception de la racine de l`arbre, qui n`a pas de parent. En supposant que le fil de trouver est pas dans ThreadGroup du thread courant, marcher jusqu`au sommet de l`arbre en regardant le parent du groupe. De cette façon, quand vous allez à trouver le "Dormeur" fil, vous saurez que vous avez trouvé puisque tous les threads actifs seront des enfants du fil de parent suzerain.

    Enfilez currentThread = Thread.currentThread ();

    ThreadGroup group = currentThread.getThreadGroup ();

    tandis que (group.getParent ()! = null) {

    group = group.getParent ();

    }

  • Utilisez la méthode enumerate () de ThreadGroup de regrouper tous les enfants fils de ce parent de super. La méthode stocke les threads actifs dans un tableau.

    int activeCountQ = group.activeCount ();

    activeThreads de la discussion [] = new Thread [activeCountQ + 5];

    int actualCount = group.enumerate (activeThreads) -

  • Utilisez le tableau activeThreads pour aider à trouver le fil manquant - ici, celui marqué "Dormeur." Une fois trouvé, utilisez la méthode dumpStack () pour fournir un stacktrace du fil:

    Enfilez trouvé = null;

    for (int i = 0- i lt; actualCount- i ++) {

    si ("Dormeur"Equals (activeThreads [i] .getName ())) {

    trouvés = activeThreads [i];

    Pause;

    }

    }

    if (trouvé! = null) {

    found.dumpStack ();

    }

  • Comme la ligne de fermeture à votre méthode main (), indiquer au système pour sortir de la mémoire:

    System.exit (0);

  • Compiler et exécuter votre programme. Alors que les numéros de ligne dans la trace de la pile pourrait être légèrement différente basée sur des choses comme le style de parenthèses, ils devraient tous fournir la même sortie générale.

    java.lang.Exception: Stack trace

     à java.lang.Thread.dumpStack (Thread.java:1206)

    à Find.main (Find.java:31)

AUTRES

Comment arrêter java.exe фото

Comment arrêter java.exe

Java.exe est le fichier utilisé pour exécuter le compilateur Java. Lorsque vous exécutez une application Java, le…

» » » » Comment trouver un fil de java à l`exécution