|=== |Path|Type|Description |`+threads+` |`+Array+` |JVM's threads. |`+threads.[].blockedCount+` |`+Number+` |Total number of times that the thread has been blocked. |`+threads.[].blockedTime+` |`+Number+` |Time in milliseconds that the thread has spent blocked. -1 if thread contention monitoring is disabled. |`+threads.[].daemon+` |`+Boolean+` |Whether the thread is a daemon thread. Only available on Java 9 or later. |`+threads.[].inNative+` |`+Boolean+` |Whether the thread is executing native code. |`+threads.[].lockName+` |`+String+` |Description of the object on which the thread is blocked, if any. |`+threads.[].lockInfo+` |`+Object+` |Object for which the thread is blocked waiting. |`+threads.[].lockInfo.className+` |`+String+` |Fully qualified class name of the lock object. |`+threads.[].lockInfo.identityHashCode+` |`+Number+` |Identity hash code of the lock object. |`+threads.[].lockedMonitors+` |`+Array+` |Monitors locked by this thread, if any |`+threads.[].lockedMonitors.[].className+` |`+String+` |Class name of the lock object. |`+threads.[].lockedMonitors.[].identityHashCode+` |`+Number+` |Identity hash code of the lock object. |`+threads.[].lockedMonitors.[].lockedStackDepth+` |`+Number+` |Stack depth where the monitor was locked. |`+threads.[].lockedMonitors.[].lockedStackFrame+` |`+Object+` |Stack frame that locked the monitor. |`+threads.[].lockedSynchronizers+` |`+Array+` |Synchronizers locked by this thread. |`+threads.[].lockedSynchronizers.[].className+` |`+String+` |Class name of the locked synchronizer. |`+threads.[].lockedSynchronizers.[].identityHashCode+` |`+Number+` |Identity hash code of the locked synchronizer. |`+threads.[].lockOwnerId+` |`+Number+` |ID of the thread that owns the object on which the thread is blocked. `-1` if the thread is not blocked. |`+threads.[].lockOwnerName+` |`+String+` |Name of the thread that owns the object on which the thread is blocked, if any. |`+threads.[].priority+` |`+Number+` |Priority of the thread. Only available on Java 9 or later. |`+threads.[].stackTrace+` |`+Array+` |Stack trace of the thread. |`+threads.[].stackTrace.[].classLoaderName+` |`+String+` |Name of the class loader of the class that contains the execution point identified by this entry, if any. Only available on Java 9 or later. |`+threads.[].stackTrace.[].className+` |`+String+` |Name of the class that contains the execution point identified by this entry. |`+threads.[].stackTrace.[].fileName+` |`+String+` |Name of the source file that contains the execution point identified by this entry, if any. |`+threads.[].stackTrace.[].lineNumber+` |`+Number+` |Line number of the execution point identified by this entry. Negative if unknown. |`+threads.[].stackTrace.[].methodName+` |`+String+` |Name of the method. |`+threads.[].stackTrace.[].moduleName+` |`+String+` |Name of the module that contains the execution point identified by this entry, if any. Only available on Java 9 or later. |`+threads.[].stackTrace.[].moduleVersion+` |`+String+` |Version of the module that contains the execution point identified by this entry, if any. Only available on Java 9 or later. |`+threads.[].stackTrace.[].nativeMethod+` |`+Boolean+` |Whether the execution point is a native method. |`+threads.[].suspended+` |`+Boolean+` |Whether the thread is suspended. |`+threads.[].threadId+` |`+Number+` |ID of the thread. |`+threads.[].threadName+` |`+String+` |Name of the thread. |`+threads.[].threadState+` |`+String+` |State of the thread (`NEW`, `RUNNABLE`, `BLOCKED`, `WAITING`, `TIMED_WAITING`, `TERMINATED`). |`+threads.[].waitedCount+` |`+Number+` |Total number of times that the thread has waited for notification. |`+threads.[].waitedTime+` |`+Number+` |Time in milliseconds that the thread has spent waiting. -1 if thread contention monitoring is disabled |===