I have a Java application where some threads are created (via new Thread()
). Using ps
I can see they have different thread IDs (LWP column) and I would like to obtain those IDs from within the Java application.
In most of the posts related to this topic that I have found (e.g., this one), the solution is to use ManagementFactory.getRuntimeMXBean().getName()
.
Using that method, however, gives me the PID of the main thread (even if I call it from one of the threads), so it is not really solving my problem.
Is there any way to obtain the thread ID for every single Thread
created by an application?
Would it be possible to use JNI to accomplish it? If somehow I could interface to a C function where I could call syscall(__NR_gettid)
, that could solve my problem. I really do not care about portability, so I am totally okay with a solution that would only work for a Linux machine.
UPDATE: I have actually solved my problem by using JNI. Details are explained in my answer. Thank you all for your suggestions/comments.