Получение идентификатора потока для потоков Java в Linux
У меня есть приложение Java, где создаются некоторые потоки (черезnew Thread()
). С помощьюps
Я вижу, что они имеют разные идентификаторы потоков (столбец LWP), и я хотел бы получить эти идентификаторы из приложения Java.
В большинстве сообщений, связанных с этой темой, которые я нашел (например,этот), решение заключается в использованииManagementFactory.getRuntimeMXBean().getName()
.
Однако использование этого метода дает мне PID основного потока (даже если я вызываю его из одного из потоков), поэтому это не решает мою проблему.
Есть ли способ получить идентификатор потока для каждогоThread
созданный приложением?
Можно ли использовать JNI для этого? Если как-то я мог бы взаимодействовать с функцией C, где я мог бы вызватьsyscall(__NR_gettid)
, что может решить мою проблему. Меня действительно не волнует переносимость, поэтому я полностью согласен с решением, которое будет работать только на Linux-машине.
UPDATE: Я на самом деле решил свою проблему с помощью JNI. Подробности объясняются в моем ответе. Спасибо всем за ваши предложения / комментарии.