|===
|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

|===