Obtendo o ID de Encadeamento para Encadeamentos Java no Linux

Eu tenho uma aplicação Java onde alguns tópicos são criados (vianew Thread()). Usandops Eu posso ver que eles têm IDs de encadeamento diferentes (coluna LWP) e gostaria de obter esses IDs de dentro do aplicativo Java.

Na maioria dos posts relacionados a este tópico que eu encontrei (por exemplo,este), a solução é usarManagementFactory.getRuntimeMXBean().getName().

Usando esse método, no entanto, dá-me o PID do thread principal (mesmo se eu chamá-lo de um dos threads), por isso não está realmente resolvendo meu problema.

Existe alguma maneira de obter o ID de thread para cada únicoThread criado por um aplicativo?

Seria possível usar o JNI para realizá-lo? Se de alguma forma eu pudesse interagir com uma função C onde eu poderia chamarsyscall(__NR_gettid)Isso poderia resolver o meu problema. Eu realmente não me importo com portabilidade, então eu estou totalmente bem com uma solução que funcionaria apenas para uma máquina Linux.

ATUALIZAR: Eu realmente resolvi meu problema usando JNI. Detalhes são explicados na minha resposta. Obrigado a todos por suas sugestões / comentários.

questionAnswers(3)

yourAnswerToTheQuestion