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