java.lang.management.ThreadMXBean is an interface that helps us to understand a lot about Threads in our code. There are numerous methods that participate to provide excellent visibility of the Threads.
Something that caught me by surprise was the method
findDeadlockedThreads() that returns a list of all Threads that are in dead-lock at the moment. Ideally, the method returns an array of Thread IDs that we can use and effectively program in our subsequent process.
Here is some sample code:
ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean(); //Acquiring an instance//Array with Thread id's that are deadlocked. This will return null incase there are no deadlocked Threads.long threadIds = threadMXBean.findDeadlockedThreads();
You can prepare your own monitoring class and include the lines above.
A list of other methods in this interface can be found here.