Abrufen der Thread-ID für Java-Threads unter Linux
Ich habe eine Java-Anwendung, in der einige Threads erstellt werden (übernew Thread()
). Verwendenps
Ich kann sehen, dass sie unterschiedliche Thread-IDs haben (LWP-Spalte), und ich möchte diese IDs in der Java-Anwendung erhalten.
In den meisten Beiträgen zu diesem Thema, die ich gefunden habe (z. B.dieses) ist die Lösung zu verwendenManagementFactory.getRuntimeMXBean().getName()
.
Mit dieser Methode erhalte ich jedoch die PID des Hauptthreads (auch wenn ich ihn von einem der Threads aus aufrufe), sodass mein Problem nicht wirklich gelöst wird.
Gibt es eine Möglichkeit, die Thread-ID für jeden einzelnen zu erhaltenThread
von einer Anwendung erstellt?
Wäre es möglich, JNI zu verwenden, um dies zu erreichen? Wenn ich irgendwie eine Schnittstelle zu einer C-Funktion herstellen könnte, die ich aufrufen könntesyscall(__NR_gettid)
, das könnte mein Problem lösen. Die Portabilität ist mir wirklich egal, daher bin ich mit einer Lösung, die nur für einen Linux-Computer funktionieren würde, völlig in Ordnung.
AKTUALISIEREN: Ich habe mein Problem tatsächlich mit JNI gelöst. Details werden in meiner Antwort erklärt. Vielen Dank für Ihre Anregungen / Kommentare.