Получение идентификатора потока для потоков Java в Linux

У меня есть приложение Java, где создаются некоторые потоки (черезnew Thread()). С помощьюps Я вижу, что они имеют разные идентификаторы потоков (столбец LWP), и я хотел бы получить эти идентификаторы из приложения Java.

В большинстве сообщений, связанных с этой темой, которые я нашел (например,этот), решение заключается в использованииManagementFactory.getRuntimeMXBean().getName().

Однако использование этого метода дает мне PID основного потока (даже если я вызываю его из одного из потоков), поэтому это не решает мою проблему.

Есть ли способ получить идентификатор потока для каждогоThread созданный приложением?

Можно ли использовать JNI для этого? Если как-то я мог бы взаимодействовать с функцией C, где я мог бы вызватьsyscall(__NR_gettid), что может решить мою проблему. Меня действительно не волнует переносимость, поэтому я полностью согласен с решением, которое будет работать только на Linux-машине.

UPDATE: Я на самом деле решил свою проблему с помощью JNI. Подробности объясняются в моем ответе. Спасибо всем за ваши предложения / комментарии.

Ответы на вопрос(3)

Ваш ответ на вопрос