Unter Linux werden Java-Threads mit nativen Threads implementiert. Daher unterscheidet sich ein Java-Programm, das Threads verwendet, nicht von einem nativen Programm, das Threads verwendet. Ein "Java-Thread" ist nur ein Thread, der zu einem JVM-Prozess gehört.
Auf einem modernen Linux-System (eines mit NPTL) haben alle Threads, die zu einem Prozess gehören, die gleiche Prozess-ID und Elternprozess-ID, aber unterschiedliche Thread-IDs. Sie können diese IDs anzeigen, indem Sie ps -eLf
ausführen. Die PID-Spalte ist die Prozess-ID, die PPID-Spalte ist die Elternprozess-ID und die LWP-Spalte ist die Thread-ID (LightWeight-Prozess). Der "Haupt" -Thread hat eine Thread-ID, die der Prozess-ID entspricht, und zusätzliche Threads haben unterschiedliche Thread-ID-Werte.
Ältere Linux-Systeme können anstelle von NPTL die "linuxthreads" -Threading-Implementierung verwenden, die nicht vollständig POSIX-kompatibel ist. Auf einem linuxthreads-System haben Threads unterschiedliche Prozess-IDs.
Sie können überprüfen, ob Ihr System NPTL oder lintuxthreads verwendet, indem Sie die C-Bibliothek (libc) des Systems als eigenständiges Programm ausführen und in der Ausgabe unter "Verfügbare Erweiterungen" suchen. Es sollte entweder "Native POSIX-Thread-Bibliothek" oder linutxthreads erwähnt werden. Der Pfad zur C-Bibliothek variiert von System zu System: Er kann /lib/libc.so.6
, /lib64/libc.so.6
(auf 64-Bit-RedHat-basierten Systemen) oder etwas wie /lib/x86_64-linux-gnu/libc.so.6
(auf modernen Debian-basierten Systemen wie Ubuntu) sein.
Auf Betriebssystemebene haben theads keine Namen; Diese existieren nur innerhalb der JVM. Die C-Funktion kann verwendet werden, um ein Signal an einen bestimmten Thread zu senden, mit dem Sie versuchen könnten, diesen spezifischen Thread von außerhalb der JVM zu entfernen, aber ich weiß nicht, wie die JVM darauf reagieren würde. Es könnte nur die ganze JVM töten.
Stephen C, Ich lerne, wie Linux Thread-Namen und Java-Thread-Namen miteinander verwandt sind. Und wie wird JVM Thread-Management unter Linux verwaltet? – karthi