Wie man einen Verweis auf ein Java-Thread

November 21

Wie man einen Verweis auf ein Java-Thread

Ausführen von Code unter Java-Threads ist eine leistungsstarke Möglichkeit, eine Menge getan in kurzer Zeit zu bekommen. Zum Überwachen und steuern die Threads, müssen Sie ein Thread-Objekt gebunden an den Thread-fähigen Code einrichten. Dies gibt Ihnen volle Kontrolle über die erstellten Threads.

Anweisungen

1 Erhalten Sie die Thread-ID mit dem folgenden Befehl innerhalb der obligatorischen run()-Funktion, die den Thread ausgeführt wird:

Thread.currentThread().getId()

2 Das Thread-Objekt eine öffentliche Variable weisen Sie möchten Sie steuern den Thread aus anderen Teilen des Programms, oder Drucken Sie es aus direkt, wenn Sie einfach wissen wollen, was läuft zu:

public void MyThreadId = 0;

öffentliche leere führen () {}

System.out.println ("Thread-Namen:" + Thread.currentThread().getName(); Der Threadname drucken

MyThreadId = Thread.currentThread().getId(); Eine öffentliche Variable zuweisen die Thread-ID

}

3 Erstellen Sie einen neuen Thread-Objekts zum Steuern oder einen Thread aus anderen Teilen des Programms zu überwachen. Sie können auch das Objekt aus einem außen-Thread wie den Hauptprozess greifen, durch den Aufbau eines kompletten Tree der laufenden Threads und Thread-Gruppen. Rufen Sie dies aus der Main()-Funktion Ihrer Java-Klasse:

Gehen Sie die Struktur der Stammgruppe finden

ThreadGroup MyRootGroup = Thread.currentThread () .getThreadGroup ();

ThreadGroup ParentGroup;

während ((ParentGroup = myRootGroup.getParent())! = Null) {}

rootGroup = parentGroup;

}

Sichern von der Wurzel, erstellen ein Thread-Objekt für jeden Thread in Ihrem Prozess zu Fuß

Fäden [] MyThreads = new Thread [myRootGroup.activeCount()];

während (rootGroup.enumerate (MyThreads, wahr) == myThreads.length) {}

myThreads = new Thread[ myThreads.length * 2 ];

}

Jetzt können Sie jeden Thread in Ihrem Prozess einzeln zugreifen. Zum Beispiel:

System.out.println ("Thread-Namen:" + myThreads[0].currentThread().getName();

MyThreadId = myThreads[0].currentThread().getId();