线程转储 (threaddump)

threaddump 端点提供来自应用程序 JVM 的线程转储。

以 JSON 格式获取线程转储

要以 JSON 格式获取线程转储,向 /actuator/threaddump 发送带有适当 Accept 头的 GET 请求,如下面的基于 curl 的示例所示:

$ curl 'http://localhost:8080/actuator/threaddump' -i -X GET \
    -H 'Accept: application/json'

响应结果类似于以下内容:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 43906

{
  "threads" : [ {
    "threadName" : "Test worker",
    "threadId" : 1,
    "blockedTime" : -1,
    "blockedCount" : 26,
    "waitedTime" : -1,
    "waitedCount" : 59,
    "lockOwnerId" : -1,
    "daemon" : false,
    "inNative" : false,
    "suspended" : false,
    "threadState" : "RUNNABLE",
    "priority" : 5,
    "stackTrace" : [ {
      "moduleName" : "java.management",
      "moduleVersion" : "21.0.7",
      "methodName" : "dumpThreads0",
      "fileName" : "ThreadImpl.java",
      "lineNumber" : -2,
      "className" : "sun.management.ThreadImpl",
      "nativeMethod" : true
    }, {
      "moduleName" : "java.management",
      "moduleVersion" : "21.0.7",
      "methodName" : "dumpAllThreads",
      "fileName" : "ThreadImpl.java",
      "lineNumber" : 518,
      "className" : "sun.management.ThreadImpl",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.management",
      "moduleVersion" : "21.0.7",
      "methodName" : "dumpAllThreads",
      "fileName" : "ThreadImpl.java",
      "lineNumber" : 506,
      "className" : "sun.management.ThreadImpl",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "getFormattedThreadDump",
      "fileName" : "ThreadDumpEndpoint.java",
      "lineNumber" : 52,
      "className" : "org.springframework.boot.actuate.management.ThreadDumpEndpoint",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "threadDump",
      "fileName" : "ThreadDumpEndpoint.java",
      "lineNumber" : 43,
      "className" : "org.springframework.boot.actuate.management.ThreadDumpEndpoint",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invokeVirtual",
      "fileName" : "DirectMethodHandle$Holder",
      "lineNumber" : -1,
      "className" : "java.lang.invoke.DirectMethodHandle$Holder",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invoke",
      "fileName" : "LambdaForm$MH",
      "lineNumber" : -1,
      "className" : "java.lang.invoke.LambdaForm$MH/0x0000007001005c00",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invokeExact_MT",
      "fileName" : "Invokers$Holder",
      "lineNumber" : -1,
      "className" : "java.lang.invoke.Invokers$Holder",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invokeImpl",
      "fileName" : "DirectMethodHandleAccessor.java",
      "lineNumber" : 153,
      "className" : "jdk.internal.reflect.DirectMethodHandleAccessor",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invoke",
      "fileName" : "DirectMethodHandleAccessor.java",
      "lineNumber" : 103,
      "className" : "jdk.internal.reflect.DirectMethodHandleAccessor",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invoke",
      "fileName" : "Method.java",
      "lineNumber" : 580,
      "className" : "java.lang.reflect.Method",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "invokeMethod",
      "fileName" : "ReflectionUtils.java",
      "lineNumber" : 281,
      "className" : "org.springframework.util.ReflectionUtils",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "invoke",
      "fileName" : "ReflectiveOperationInvoker.java",
      "lineNumber" : 74,
      "className" : "org.springframework.boot.actuate.endpoint.invoke.reflect.ReflectiveOperationInvoker",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "invoke",
      "fileName" : "AbstractDiscoveredOperation.java",
      "lineNumber" : 60,
      "className" : "org.springframework.boot.actuate.endpoint.annotation.AbstractDiscoveredOperation",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "handle",
      "fileName" : "AbstractWebMvcEndpointHandlerMapping.java",
      "lineNumber" : 327,
      "className" : "org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$ServletWebOperationAdapter",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "handle",
      "fileName" : "AbstractWebMvcEndpointHandlerMapping.java",
      "lineNumber" : 434,
      "className" : "org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invokeSpecial",
      "fileName" : "DirectMethodHandle$Holder",
      "lineNumber" : -1,
      "className" : "java.lang.invoke.DirectMethodHandle$Holder",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invoke",
      "fileName" : "LambdaForm$MH",
      "lineNumber" : -1,
      "className" : "java.lang.invoke.LambdaForm$MH/0x000000700164c400",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invokeExact_MT",
      "fileName" : "LambdaForm$MH",
      "lineNumber" : -1,
      "className" : "java.lang.invoke.LambdaForm$MH/0x0000007001039800",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invokeImpl",
      "fileName" : "DirectMethodHandleAccessor.java",
      "lineNumber" : 155,
      "className" : "jdk.internal.reflect.DirectMethodHandleAccessor",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invoke",
      "fileName" : "DirectMethodHandleAccessor.java",
      "lineNumber" : 103,
      "className" : "jdk.internal.reflect.DirectMethodHandleAccessor",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invoke",
      "fileName" : "Method.java",
      "lineNumber" : 580,
      "className" : "java.lang.reflect.Method",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "doInvoke",
      "fileName" : "InvocableHandlerMethod.java",
      "lineNumber" : 258,
      "className" : "org.springframework.web.method.support.InvocableHandlerMethod",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "invokeForRequest",
      "fileName" : "InvocableHandlerMethod.java",
      "lineNumber" : 191,
      "className" : "org.springframework.web.method.support.InvocableHandlerMethod",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "invokeAndHandle",
      "fileName" : "ServletInvocableHandlerMethod.java",
      "lineNumber" : 118,
      "className" : "org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "invokeHandlerMethod",
      "fileName" : "RequestMappingHandlerAdapter.java",
      "lineNumber" : 986,
      "className" : "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "handleInternal",
      "fileName" : "RequestMappingHandlerAdapter.java",
      "lineNumber" : 891,
      "className" : "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "handle",
      "fileName" : "AbstractHandlerMethodAdapter.java",
      "lineNumber" : 87,
      "className" : "org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "doDispatch",
      "fileName" : "DispatcherServlet.java",
      "lineNumber" : 1089,
      "className" : "org.springframework.web.servlet.DispatcherServlet",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "doService",
      "fileName" : "DispatcherServlet.java",
      "lineNumber" : 979,
      "className" : "org.springframework.web.servlet.DispatcherServlet",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "processRequest",
      "fileName" : "FrameworkServlet.java",
      "lineNumber" : 1014,
      "className" : "org.springframework.web.servlet.FrameworkServlet",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "doGet",
      "fileName" : "FrameworkServlet.java",
      "lineNumber" : 903,
      "className" : "org.springframework.web.servlet.FrameworkServlet",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "service",
      "fileName" : "HttpServlet.java",
      "lineNumber" : 527,
      "className" : "jakarta.servlet.http.HttpServlet",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "service",
      "fileName" : "FrameworkServlet.java",
      "lineNumber" : 885,
      "className" : "org.springframework.web.servlet.FrameworkServlet",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "service",
      "fileName" : "TestDispatcherServlet.java",
      "lineNumber" : 72,
      "className" : "org.springframework.test.web.servlet.TestDispatcherServlet",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "service",
      "fileName" : "HttpServlet.java",
      "lineNumber" : 614,
      "className" : "jakarta.servlet.http.HttpServlet",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "doFilter",
      "fileName" : "MockFilterChain.java",
      "lineNumber" : 165,
      "className" : "org.springframework.mock.web.MockFilterChain$ServletFilterProxy",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "doFilter",
      "fileName" : "MockFilterChain.java",
      "lineNumber" : 132,
      "className" : "org.springframework.mock.web.MockFilterChain",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "perform",
      "fileName" : "MockMvc.java",
      "lineNumber" : 201,
      "className" : "org.springframework.test.web.servlet.MockMvc",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "getMvcResultOrFailure",
      "fileName" : "MockMvcTester.java",
      "lineNumber" : 387,
      "className" : "org.springframework.test.web.servlet.assertj.MockMvcTester",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "perform",
      "fileName" : "MockMvcTester.java",
      "lineNumber" : 376,
      "className" : "org.springframework.test.web.servlet.assertj.MockMvcTester",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "exchange",
      "fileName" : "MockMvcTester.java",
      "lineNumber" : 402,
      "className" : "org.springframework.test.web.servlet.assertj.MockMvcTester",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "exchange",
      "fileName" : "MockMvcTester.java",
      "lineNumber" : 461,
      "className" : "org.springframework.test.web.servlet.assertj.MockMvcTester$MockMvcRequestBuilder",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "assertThat",
      "fileName" : "MockMvcTester.java",
      "lineNumber" : 487,
      "className" : "org.springframework.test.web.servlet.assertj.MockMvcTester$MockMvcRequestBuilder",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "assertThat",
      "fileName" : "MockMvcTester.java",
      "lineNumber" : 426,
      "className" : "org.springframework.test.web.servlet.assertj.MockMvcTester$MockMvcRequestBuilder",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "assertThat",
      "fileName" : "AssertionsForInterfaceTypes.java",
      "lineNumber" : 82,
      "className" : "org.assertj.core.api.AssertionsForInterfaceTypes",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "assertThat",
      "fileName" : "Assertions.java",
      "lineNumber" : 3371,
      "className" : "org.assertj.core.api.Assertions",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "jsonThreadDump",
      "fileName" : "ThreadDumpEndpointDocumentationTests.java",
      "lineNumber" : 65,
      "className" : "org.springframework.boot.actuate.autoconfigure.management.ThreadDumpEndpointDocumentationTests",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invokeVirtual",
      "fileName" : "LambdaForm$DMH",
      "lineNumber" : -1,
      "className" : "java.lang.invoke.LambdaForm$DMH/0x00000070016f2000",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invoke",
      "fileName" : "LambdaForm$MH",
      "lineNumber" : -1,
      "className" : "java.lang.invoke.LambdaForm$MH/0x0000007001098800",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invokeExact_MT",
      "fileName" : "Invokers$Holder",
      "lineNumber" : -1,
      "className" : "java.lang.invoke.Invokers$Holder",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invokeImpl",
      "fileName" : "DirectMethodHandleAccessor.java",
      "lineNumber" : 153,
      "className" : "jdk.internal.reflect.DirectMethodHandleAccessor",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invoke",
      "fileName" : "DirectMethodHandleAccessor.java",
      "lineNumber" : 103,
      "className" : "jdk.internal.reflect.DirectMethodHandleAccessor",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invoke",
      "fileName" : "Method.java",
      "lineNumber" : 580,
      "className" : "java.lang.reflect.Method",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "invokeMethod",
      "fileName" : "ReflectionUtils.java",
      "lineNumber" : 767,
      "className" : "org.junit.platform.commons.util.ReflectionUtils",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "proceed",
      "fileName" : "MethodInvocation.java",
      "lineNumber" : 60,
      "className" : "org.junit.jupiter.engine.execution.MethodInvocation",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "proceed",
      "fileName" : "InvocationInterceptorChain.java",
      "lineNumber" : 131,
      "className" : "org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "intercept",
      "fileName" : "TimeoutExtension.java",
      "lineNumber" : 156,
      "className" : "org.junit.jupiter.engine.extension.TimeoutExtension",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "interceptTestableMethod",
      "fileName" : "TimeoutExtension.java",
      "lineNumber" : 147,
      "className" : "org.junit.jupiter.engine.extension.TimeoutExtension",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "interceptTestMethod",
      "fileName" : "TimeoutExtension.java",
      "lineNumber" : 86,
      "className" : "org.junit.jupiter.engine.extension.TimeoutExtension",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "apply",
      "lineNumber" : -1,
      "className" : "org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x0000007001244c68",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "lambda$ofVoidMethod$0",
      "fileName" : "InterceptingExecutableInvoker.java",
      "lineNumber" : 103,
      "className" : "org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "apply",
      "lineNumber" : -1,
      "className" : "org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall$$Lambda/0x000000700124c1f0",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "lambda$invoke$0",
      "fileName" : "InterceptingExecutableInvoker.java",
      "lineNumber" : 93,
      "className" : "org.junit.jupiter.engine.execution.InterceptingExecutableInvoker",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "apply",
      "lineNumber" : -1,
      "className" : "org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$$Lambda/0x0000007001305d10",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "proceed",
      "fileName" : "InvocationInterceptorChain.java",
      "lineNumber" : 106,
      "className" : "org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "proceed",
      "fileName" : "InvocationInterceptorChain.java",
      "lineNumber" : 64,
      "className" : "org.junit.jupiter.engine.execution.InvocationInterceptorChain",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "chainAndInvoke",
      "fileName" : "InvocationInterceptorChain.java",
      "lineNumber" : 45,
      "className" : "org.junit.jupiter.engine.execution.InvocationInterceptorChain",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "invoke",
      "fileName" : "InvocationInterceptorChain.java",
      "lineNumber" : 37,
      "className" : "org.junit.jupiter.engine.execution.InvocationInterceptorChain",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "invoke",
      "fileName" : "InterceptingExecutableInvoker.java",
      "lineNumber" : 92,
      "className" : "org.junit.jupiter.engine.execution.InterceptingExecutableInvoker",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "invoke",
      "fileName" : "InterceptingExecutableInvoker.java",
      "lineNumber" : 86,
      "className" : "org.junit.jupiter.engine.execution.InterceptingExecutableInvoker",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "lambda$invokeTestMethod$8",
      "fileName" : "TestMethodTestDescriptor.java",
      "lineNumber" : 217,
      "className" : "org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "lineNumber" : -1,
      "className" : "org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x0000007001716718",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "ThrowableCollector.java",
      "lineNumber" : 73,
      "className" : "org.junit.platform.engine.support.hierarchical.ThrowableCollector",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "invokeTestMethod",
      "fileName" : "TestMethodTestDescriptor.java",
      "lineNumber" : 213,
      "className" : "org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "TestMethodTestDescriptor.java",
      "lineNumber" : 138,
      "className" : "org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "TestMethodTestDescriptor.java",
      "lineNumber" : 68,
      "className" : "org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "lambda$executeRecursively$6",
      "fileName" : "NodeTestTask.java",
      "lineNumber" : 156,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "lineNumber" : -1,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000007001270408",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "ThrowableCollector.java",
      "lineNumber" : 73,
      "className" : "org.junit.platform.engine.support.hierarchical.ThrowableCollector",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "lambda$executeRecursively$8",
      "fileName" : "NodeTestTask.java",
      "lineNumber" : 146,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "invoke",
      "lineNumber" : -1,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00000070012701f0",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "around",
      "fileName" : "Node.java",
      "lineNumber" : 137,
      "className" : "org.junit.platform.engine.support.hierarchical.Node",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "lambda$executeRecursively$9",
      "fileName" : "NodeTestTask.java",
      "lineNumber" : 144,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "lineNumber" : -1,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x000000700126fd10",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "ThrowableCollector.java",
      "lineNumber" : 73,
      "className" : "org.junit.platform.engine.support.hierarchical.ThrowableCollector",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "executeRecursively",
      "fileName" : "NodeTestTask.java",
      "lineNumber" : 143,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "NodeTestTask.java",
      "lineNumber" : 100,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "accept",
      "lineNumber" : -1,
      "className" : "org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda/0x0000007001270ed0",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "forEach",
      "fileName" : "ArrayList.java",
      "lineNumber" : 1596,
      "className" : "java.util.ArrayList",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "invokeAll",
      "fileName" : "SameThreadHierarchicalTestExecutorService.java",
      "lineNumber" : 41,
      "className" : "org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "lambda$executeRecursively$6",
      "fileName" : "NodeTestTask.java",
      "lineNumber" : 160,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "lineNumber" : -1,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000007001270408",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "ThrowableCollector.java",
      "lineNumber" : 73,
      "className" : "org.junit.platform.engine.support.hierarchical.ThrowableCollector",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "lambda$executeRecursively$8",
      "fileName" : "NodeTestTask.java",
      "lineNumber" : 146,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "invoke",
      "lineNumber" : -1,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00000070012701f0",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "around",
      "fileName" : "Node.java",
      "lineNumber" : 137,
      "className" : "org.junit.platform.engine.support.hierarchical.Node",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "lambda$executeRecursively$9",
      "fileName" : "NodeTestTask.java",
      "lineNumber" : 144,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "lineNumber" : -1,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x000000700126fd10",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "ThrowableCollector.java",
      "lineNumber" : 73,
      "className" : "org.junit.platform.engine.support.hierarchical.ThrowableCollector",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "executeRecursively",
      "fileName" : "NodeTestTask.java",
      "lineNumber" : 143,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "NodeTestTask.java",
      "lineNumber" : 100,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "accept",
      "lineNumber" : -1,
      "className" : "org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda/0x0000007001270ed0",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "forEach",
      "fileName" : "ArrayList.java",
      "lineNumber" : 1596,
      "className" : "java.util.ArrayList",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "invokeAll",
      "fileName" : "SameThreadHierarchicalTestExecutorService.java",
      "lineNumber" : 41,
      "className" : "org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "lambda$executeRecursively$6",
      "fileName" : "NodeTestTask.java",
      "lineNumber" : 160,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "lineNumber" : -1,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000007001270408",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "ThrowableCollector.java",
      "lineNumber" : 73,
      "className" : "org.junit.platform.engine.support.hierarchical.ThrowableCollector",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "lambda$executeRecursively$8",
      "fileName" : "NodeTestTask.java",
      "lineNumber" : 146,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "invoke",
      "lineNumber" : -1,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00000070012701f0",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "around",
      "fileName" : "Node.java",
      "lineNumber" : 137,
      "className" : "org.junit.platform.engine.support.hierarchical.Node",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "lambda$executeRecursively$9",
      "fileName" : "NodeTestTask.java",
      "lineNumber" : 144,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "lineNumber" : -1,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x000000700126fd10",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "ThrowableCollector.java",
      "lineNumber" : 73,
      "className" : "org.junit.platform.engine.support.hierarchical.ThrowableCollector",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "executeRecursively",
      "fileName" : "NodeTestTask.java",
      "lineNumber" : 143,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "NodeTestTask.java",
      "lineNumber" : 100,
      "className" : "org.junit.platform.engine.support.hierarchical.NodeTestTask",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "submit",
      "fileName" : "SameThreadHierarchicalTestExecutorService.java",
      "lineNumber" : 35,
      "className" : "org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "HierarchicalTestExecutor.java",
      "lineNumber" : 57,
      "className" : "org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "HierarchicalTestEngine.java",
      "lineNumber" : 54,
      "className" : "org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "EngineExecutionOrchestrator.java",
      "lineNumber" : 198,
      "className" : "org.junit.platform.launcher.core.EngineExecutionOrchestrator",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "EngineExecutionOrchestrator.java",
      "lineNumber" : 169,
      "className" : "org.junit.platform.launcher.core.EngineExecutionOrchestrator",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "EngineExecutionOrchestrator.java",
      "lineNumber" : 93,
      "className" : "org.junit.platform.launcher.core.EngineExecutionOrchestrator",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "lambda$execute$0",
      "fileName" : "EngineExecutionOrchestrator.java",
      "lineNumber" : 58,
      "className" : "org.junit.platform.launcher.core.EngineExecutionOrchestrator",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "accept",
      "lineNumber" : -1,
      "className" : "org.junit.platform.launcher.core.EngineExecutionOrchestrator$$Lambda/0x000000700125cee8",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "withInterceptedStreams",
      "fileName" : "EngineExecutionOrchestrator.java",
      "lineNumber" : 141,
      "className" : "org.junit.platform.launcher.core.EngineExecutionOrchestrator",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "EngineExecutionOrchestrator.java",
      "lineNumber" : 57,
      "className" : "org.junit.platform.launcher.core.EngineExecutionOrchestrator",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "DefaultLauncher.java",
      "lineNumber" : 103,
      "className" : "org.junit.platform.launcher.core.DefaultLauncher",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "DefaultLauncher.java",
      "lineNumber" : 85,
      "className" : "org.junit.platform.launcher.core.DefaultLauncher",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "execute",
      "fileName" : "DelegatingLauncher.java",
      "lineNumber" : 47,
      "className" : "org.junit.platform.launcher.core.DelegatingLauncher",
      "nativeMethod" : false
    }, {
      "methodName" : "processAllTestClasses",
      "fileName" : "JUnitPlatformTestClassProcessor.java",
      "lineNumber" : 124,
      "className" : "org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor",
      "nativeMethod" : false
    }, {
      "methodName" : "access$000",
      "fileName" : "JUnitPlatformTestClassProcessor.java",
      "lineNumber" : 99,
      "className" : "org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor",
      "nativeMethod" : false
    }, {
      "methodName" : "stop",
      "fileName" : "JUnitPlatformTestClassProcessor.java",
      "lineNumber" : 94,
      "className" : "org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor",
      "nativeMethod" : false
    }, {
      "methodName" : "stop",
      "fileName" : "SuiteTestClassProcessor.java",
      "lineNumber" : 63,
      "className" : "org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invokeInterface",
      "fileName" : "LambdaForm$DMH",
      "lineNumber" : -1,
      "className" : "java.lang.invoke.LambdaForm$DMH/0x0000007001098000",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invoke",
      "fileName" : "LambdaForm$MH",
      "lineNumber" : -1,
      "className" : "java.lang.invoke.LambdaForm$MH/0x0000007001098800",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invokeExact_MT",
      "fileName" : "Invokers$Holder",
      "lineNumber" : -1,
      "className" : "java.lang.invoke.Invokers$Holder",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invokeImpl",
      "fileName" : "DirectMethodHandleAccessor.java",
      "lineNumber" : 153,
      "className" : "jdk.internal.reflect.DirectMethodHandleAccessor",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invoke",
      "fileName" : "DirectMethodHandleAccessor.java",
      "lineNumber" : 103,
      "className" : "jdk.internal.reflect.DirectMethodHandleAccessor",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "invoke",
      "fileName" : "Method.java",
      "lineNumber" : 580,
      "className" : "java.lang.reflect.Method",
      "nativeMethod" : false
    }, {
      "methodName" : "dispatch",
      "fileName" : "ReflectionDispatch.java",
      "lineNumber" : 36,
      "className" : "org.gradle.internal.dispatch.ReflectionDispatch",
      "nativeMethod" : false
    }, {
      "methodName" : "dispatch",
      "fileName" : "ReflectionDispatch.java",
      "lineNumber" : 24,
      "className" : "org.gradle.internal.dispatch.ReflectionDispatch",
      "nativeMethod" : false
    }, {
      "methodName" : "dispatch",
      "fileName" : "ContextClassLoaderDispatch.java",
      "lineNumber" : 33,
      "className" : "org.gradle.internal.dispatch.ContextClassLoaderDispatch",
      "nativeMethod" : false
    }, {
      "methodName" : "invoke",
      "fileName" : "ProxyDispatchAdapter.java",
      "lineNumber" : 92,
      "className" : "org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler",
      "nativeMethod" : false
    }, {
      "moduleName" : "jdk.proxy1",
      "methodName" : "stop",
      "lineNumber" : -1,
      "className" : "jdk.proxy1.$Proxy4",
      "nativeMethod" : false
    }, {
      "methodName" : "run",
      "fileName" : "TestWorker.java",
      "lineNumber" : 200,
      "className" : "org.gradle.api.internal.tasks.testing.worker.TestWorker$3",
      "nativeMethod" : false
    }, {
      "methodName" : "executeAndMaintainThreadName",
      "fileName" : "TestWorker.java",
      "lineNumber" : 132,
      "className" : "org.gradle.api.internal.tasks.testing.worker.TestWorker",
      "nativeMethod" : false
    }, {
      "methodName" : "execute",
      "fileName" : "TestWorker.java",
      "lineNumber" : 103,
      "className" : "org.gradle.api.internal.tasks.testing.worker.TestWorker",
      "nativeMethod" : false
    }, {
      "methodName" : "execute",
      "fileName" : "TestWorker.java",
      "lineNumber" : 63,
      "className" : "org.gradle.api.internal.tasks.testing.worker.TestWorker",
      "nativeMethod" : false
    }, {
      "methodName" : "execute",
      "fileName" : "ActionExecutionWorker.java",
      "lineNumber" : 56,
      "className" : "org.gradle.process.internal.worker.child.ActionExecutionWorker",
      "nativeMethod" : false
    }, {
      "methodName" : "call",
      "fileName" : "SystemApplicationClassLoaderWorker.java",
      "lineNumber" : 122,
      "className" : "org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker",
      "nativeMethod" : false
    }, {
      "methodName" : "call",
      "fileName" : "SystemApplicationClassLoaderWorker.java",
      "lineNumber" : 72,
      "className" : "org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "run",
      "fileName" : "GradleWorkerMain.java",
      "lineNumber" : 69,
      "className" : "worker.org.gradle.process.internal.worker.GradleWorkerMain",
      "nativeMethod" : false
    }, {
      "classLoaderName" : "app",
      "methodName" : "main",
      "fileName" : "GradleWorkerMain.java",
      "lineNumber" : 74,
      "className" : "worker.org.gradle.process.internal.worker.GradleWorkerMain",
      "nativeMethod" : false
    } ],
    "lockedMonitors" : [ ],
    "lockedSynchronizers" : [ ]
  }, {
    "threadName" : "Reference Handler",
    "threadId" : 9,
    "blockedTime" : -1,
    "blockedCount" : 0,
    "waitedTime" : -1,
    "waitedCount" : 2,
    "lockOwnerId" : -1,
    "daemon" : true,
    "inNative" : false,
    "suspended" : false,
    "threadState" : "RUNNABLE",
    "priority" : 10,
    "stackTrace" : [ {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "waitForReferencePendingList",
      "fileName" : "Reference.java",
      "lineNumber" : -2,
      "className" : "java.lang.ref.Reference",
      "nativeMethod" : true
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "processPendingReferences",
      "fileName" : "Reference.java",
      "lineNumber" : 246,
      "className" : "java.lang.ref.Reference",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "run",
      "fileName" : "Reference.java",
      "lineNumber" : 208,
      "className" : "java.lang.ref.Reference$ReferenceHandler",
      "nativeMethod" : false
    } ],
    "lockedMonitors" : [ ],
    "lockedSynchronizers" : [ ]
  }, {
    "threadName" : "Finalizer",
    "threadId" : 10,
    "blockedTime" : -1,
    "blockedCount" : 0,
    "waitedTime" : -1,
    "waitedCount" : 1,
    "lockName" : "java.lang.ref.NativeReferenceQueue$Lock@1d033ae1",
    "lockOwnerId" : -1,
    "daemon" : true,
    "inNative" : false,
    "suspended" : false,
    "threadState" : "WAITING",
    "priority" : 8,
    "stackTrace" : [ {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "wait0",
      "lineNumber" : -2,
      "className" : "java.lang.Object",
      "nativeMethod" : true
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "wait",
      "lineNumber" : 366,
      "className" : "java.lang.Object",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "wait",
      "lineNumber" : 339,
      "className" : "java.lang.Object",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "await",
      "fileName" : "NativeReferenceQueue.java",
      "lineNumber" : 48,
      "className" : "java.lang.ref.NativeReferenceQueue",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "remove0",
      "fileName" : "ReferenceQueue.java",
      "lineNumber" : 158,
      "className" : "java.lang.ref.ReferenceQueue",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "remove",
      "fileName" : "NativeReferenceQueue.java",
      "lineNumber" : 89,
      "className" : "java.lang.ref.NativeReferenceQueue",
      "nativeMethod" : false
    }, {
      "moduleName" : "java.base",
      "moduleVersion" : "21.0.7",
      "methodName" : "run",
      "fileName" : "Finalizer.java",
      "lineNumber" : 173,
      "className" : "java.lang.ref.Finalizer$FinalizerThread",
      "nativeMethod" : false
    } ],
    "lockedMonitors" : [ ],
    "lockedSynchronizers" : [ ],
    "lockInfo" : {
      "className" : "java.lang.ref.NativeReferenceQueue$Lock",
      "identityHashCode" : 486750945
    }
  } ]
}

响应结构

响应包含 JVM 线程的详细信息。 下表描述了响应的结构:

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

以文本格式获取线程转储

要以文本格式获取线程转储,向 /actuator/threaddump 发送接受 text/plainGET 请求,如下面的基于 curl 的示例所示:

$ curl 'http://localhost:8080/actuator/threaddump' -i -X GET \
    -H 'Accept: text/plain'

响应结果类似于以下内容:

HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 27545

2025-05-25 18:03:17
Full thread dump OpenJDK 64-Bit Server VM (21.0.7+6-LTS mixed mode, sharing):

"Test worker" - Thread t@1
   java.lang.Thread.State: RUNNABLE
	at java.management@21.0.7/sun.management.ThreadImpl.dumpThreads0(Native Method)
	at java.management@21.0.7/sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:518)
	at java.management@21.0.7/sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:506)
	at app//org.springframework.boot.actuate.management.ThreadDumpEndpoint.getFormattedThreadDump(ThreadDumpEndpoint.java:52)
	at app//org.springframework.boot.actuate.management.ThreadDumpEndpoint.textThreadDump(ThreadDumpEndpoint.java:48)
	at java.base@21.0.7/java.lang.invoke.DirectMethodHandle$Holder.invokeVirtual(DirectMethodHandle$Holder)
	at java.base@21.0.7/java.lang.invoke.LambdaForm$MH/0x0000007001005c00.invoke(LambdaForm$MH)
	at java.base@21.0.7/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder)
	at java.base@21.0.7/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153)
	at java.base@21.0.7/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base@21.0.7/java.lang.reflect.Method.invoke(Method.java:580)
	at app//org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:281)
	at app//org.springframework.boot.actuate.endpoint.invoke.reflect.ReflectiveOperationInvoker.invoke(ReflectiveOperationInvoker.java:74)
	at app//org.springframework.boot.actuate.endpoint.annotation.AbstractDiscoveredOperation.invoke(AbstractDiscoveredOperation.java:60)
	at app//org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$ServletWebOperationAdapter.handle(AbstractWebMvcEndpointHandlerMapping.java:327)
	at app//org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(AbstractWebMvcEndpointHandlerMapping.java:434)
	at java.base@21.0.7/java.lang.invoke.DirectMethodHandle$Holder.invokeSpecial(DirectMethodHandle$Holder)
	at java.base@21.0.7/java.lang.invoke.LambdaForm$MH/0x000000700164c400.invoke(LambdaForm$MH)
	at java.base@21.0.7/java.lang.invoke.LambdaForm$MH/0x0000007001039800.invokeExact_MT(LambdaForm$MH)
	at java.base@21.0.7/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:155)
	at java.base@21.0.7/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base@21.0.7/java.lang.reflect.Method.invoke(Method.java:580)
	at app//org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258)
	at app//org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191)
	at app//org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
	at app//org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:986)
	at app//org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:891)
	at app//org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
	at app//org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
	at app//org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
	at app//org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
	at app//org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
	at app//jakarta.servlet.http.HttpServlet.service(HttpServlet.java:527)
	at app//org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
	at app//org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
	at app//jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)
	at app//org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:165)
	at app//org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:132)
	at app//org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:201)
	at app//org.springframework.test.web.servlet.assertj.MockMvcTester.getMvcResultOrFailure(MockMvcTester.java:387)
	at app//org.springframework.test.web.servlet.assertj.MockMvcTester.perform(MockMvcTester.java:376)
	at app//org.springframework.test.web.servlet.assertj.MockMvcTester.exchange(MockMvcTester.java:402)
	at app//org.springframework.test.web.servlet.assertj.MockMvcTester$MockMvcRequestBuilder.exchange(MockMvcTester.java:461)
	at app//org.springframework.test.web.servlet.assertj.MockMvcTester$MockMvcRequestBuilder.assertThat(MockMvcTester.java:487)
	at app//org.springframework.test.web.servlet.assertj.MockMvcTester$MockMvcRequestBuilder.assertThat(MockMvcTester.java:426)
	at app//org.assertj.core.api.AssertionsForInterfaceTypes.assertThat(AssertionsForInterfaceTypes.java:82)
	at app//org.assertj.core.api.Assertions.assertThat(Assertions.java:3371)
	at app//org.springframework.boot.actuate.autoconfigure.management.ThreadDumpEndpointDocumentationTests.textThreadDump(ThreadDumpEndpointDocumentationTests.java:180)
	at java.base@21.0.7/java.lang.invoke.LambdaForm$DMH/0x00000070016f2000.invokeVirtual(LambdaForm$DMH)
	at java.base@21.0.7/java.lang.invoke.LambdaForm$MH/0x0000007001098800.invoke(LambdaForm$MH)
	at java.base@21.0.7/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder)
	at java.base@21.0.7/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153)
	at java.base@21.0.7/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base@21.0.7/java.lang.reflect.Method.invoke(Method.java:580)
	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:767)
	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x0000007001244c68.apply(Unknown Source)
	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall$$Lambda/0x000000700124c1f0.apply(Unknown Source)
	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$$Lambda/0x0000007001305d10.apply(Unknown Source)
	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$8(TestMethodTestDescriptor.java:217)
	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x0000007001716718.execute(Unknown Source)
	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213)
	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138)
	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:156)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000007001270408.execute(Unknown Source)
	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00000070012701f0.invoke(Unknown Source)
	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x000000700126fd10.execute(Unknown Source)
	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100)
	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda/0x0000007001270ed0.accept(Unknown Source)
	at java.base@21.0.7/java.util.ArrayList.forEach(ArrayList.java:1596)
	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000007001270408.execute(Unknown Source)
	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00000070012701f0.invoke(Unknown Source)
	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x000000700126fd10.execute(Unknown Source)
	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100)
	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda/0x0000007001270ed0.accept(Unknown Source)
	at java.base@21.0.7/java.util.ArrayList.forEach(ArrayList.java:1596)
	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000007001270408.execute(Unknown Source)
	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00000070012701f0.invoke(Unknown Source)
	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x000000700126fd10.execute(Unknown Source)
	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100)
	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:198)
	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:169)
	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:93)
	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:58)
	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator$$Lambda/0x000000700125cee8.accept(Unknown Source)
	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:141)
	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:57)
	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:103)
	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:85)
	at app//org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:47)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:124)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:99)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:94)
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:63)
	at java.base@21.0.7/java.lang.invoke.LambdaForm$DMH/0x0000007001098000.invokeInterface(LambdaForm$DMH)
	at java.base@21.0.7/java.lang.invoke.LambdaForm$MH/0x0000007001098800.invoke(LambdaForm$MH)
	at java.base@21.0.7/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder)
	at java.base@21.0.7/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153)
	at java.base@21.0.7/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base@21.0.7/java.lang.reflect.Method.invoke(Method.java:580)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:92)
	at jdk.proxy1/jdk.proxy1.$Proxy4.stop(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:200)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:132)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72)
	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)

   Locked ownable synchronizers:
	- None

"Reference Handler" - Thread t@9
   java.lang.Thread.State: RUNNABLE
	at java.base@21.0.7/java.lang.ref.Reference.waitForReferencePendingList(Native Method)
	at java.base@21.0.7/java.lang.ref.Reference.processPendingReferences(Reference.java:246)
	at java.base@21.0.7/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208)

   Locked ownable synchronizers:
	- None

"Finalizer" - Thread t@10
   java.lang.Thread.State: WAITING
	at java.base@21.0.7/java.lang.Object.wait0(Native Method)
	- parking to wait for <1d033ae1> (a java.lang.ref.NativeReferenceQueue$Lock)
	at java.base@21.0.7/java.lang.Object.wait(Unknown Source)
	at java.base@21.0.7/java.lang.Object.wait(Unknown Source)
	at java.base@21.0.7/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48)
	at java.base@21.0.7/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158)
	at java.base@21.0.7/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89)
	at java.base@21.0.7/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173)

   Locked ownable synchronizers:
	- None

"Signal Dispatcher" - Thread t@11
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"Common-Cleaner" - Thread t@18
   java.lang.Thread.State: TIMED_WAITING
	at java.base@21.0.7/jdk.internal.misc.Unsafe.park(Native Method)
	- parking to wait for <5de4f44e> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.base@21.0.7/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269)
	at java.base@21.0.7/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852)
	at java.base@21.0.7/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71)
	at java.base@21.0.7/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143)
	at java.base@21.0.7/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218)
	at java.base@21.0.7/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140)
	at java.base@21.0.7/java.lang.Thread.runWith(Thread.java:1596)
	at java.base@21.0.7/java.lang.Thread.run(Thread.java:1583)
	at java.base@21.0.7/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186)

   Locked ownable synchronizers:
	- None

"Notification Thread" - Thread t@19
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"/127.0.0.1:51635 to /127.0.0.1:51629 workers" - Thread t@26
   java.lang.Thread.State: WAITING
	at java.base@21.0.7/jdk.internal.misc.Unsafe.park(Native Method)
	- parking to wait for <36e7a455> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.base@21.0.7/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371)
	at java.base@21.0.7/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519)
	at java.base@21.0.7/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780)
	at java.base@21.0.7/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725)
	at java.base@21.0.7/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1712)
	at org.gradle.internal.remote.internal.hub.queue.EndPointQueue.take(EndPointQueue.java:49)
	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:403)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:48)
	at java.base@21.0.7/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base@21.0.7/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base@21.0.7/java.lang.Thread.runWith(Thread.java:1596)
	at java.base@21.0.7/java.lang.Thread.run(Thread.java:1583)

   Locked ownable synchronizers:
	- Locked <383bfa16> (a java.util.concurrent.ThreadPoolExecutor$Worker)

"/127.0.0.1:51635 to /127.0.0.1:51629 workers Thread 2" - Thread t@27
   java.lang.Thread.State: WAITING
	at java.base@21.0.7/jdk.internal.misc.Unsafe.park(Native Method)
	- parking to wait for <627ceaf> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.base@21.0.7/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371)
	at java.base@21.0.7/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519)
	at java.base@21.0.7/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780)
	at java.base@21.0.7/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725)
	at java.base@21.0.7/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1712)
	at org.gradle.internal.remote.internal.hub.queue.EndPointQueue.take(EndPointQueue.java:49)
	at org.gradle.internal.remote.internal.hub.MessageHub$ConnectionDispatch.run(MessageHub.java:322)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:48)
	at java.base@21.0.7/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base@21.0.7/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base@21.0.7/java.lang.Thread.runWith(Thread.java:1596)
	at java.base@21.0.7/java.lang.Thread.run(Thread.java:1583)

   Locked ownable synchronizers:
	- Locked <47d9a273> (a java.util.concurrent.ThreadPoolExecutor$Worker)

"/127.0.0.1:51635 to /127.0.0.1:51629 workers Thread 3" - Thread t@28
   java.lang.Thread.State: RUNNABLE
	at java.base@21.0.7/sun.nio.ch.KQueue.poll(Native Method)
	at java.base@21.0.7/sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:125)
	at java.base@21.0.7/sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:130)
	- locked <2f738b8> (a sun.nio.ch.Util$2)
	- locked <73852c7c> (a sun.nio.ch.KQueueSelectorImpl)
	at java.base@21.0.7/sun.nio.ch.SelectorImpl.select(SelectorImpl.java:147)
	at org.gradle.internal.remote.internal.inet.SocketConnection$SocketInputStream.read(SocketConnection.java:187)
	at com.esotericsoftware.kryo.io.Input.fill(Input.java:146)
	at com.esotericsoftware.kryo.io.Input.require(Input.java:178)
	at com.esotericsoftware.kryo.io.Input.readByte(Input.java:295)
	at org.gradle.internal.serialize.kryo.KryoBackedDecoder.readByte(KryoBackedDecoder.java:88)
	at org.gradle.internal.remote.internal.hub.InterHubMessageSerializer$MessageReader.read(InterHubMessageSerializer.java:64)
	at org.gradle.internal.remote.internal.hub.InterHubMessageSerializer$MessageReader.read(InterHubMessageSerializer.java:52)
	at org.gradle.internal.remote.internal.inet.SocketConnection.receive(SocketConnection.java:83)
	at org.gradle.internal.remote.internal.hub.MessageHub$ConnectionReceive.run(MessageHub.java:270)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:48)
	at java.base@21.0.7/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base@21.0.7/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base@21.0.7/java.lang.Thread.runWith(Thread.java:1596)
	at java.base@21.0.7/java.lang.Thread.run(Thread.java:1583)

   Locked ownable synchronizers:
	- Locked <1151e434> (a java.util.concurrent.ThreadPoolExecutor$Worker)

"process reaper" - Thread t@36
   java.lang.Thread.State: TIMED_WAITING
	at java.base@21.0.7/jdk.internal.misc.Unsafe.park(Native Method)
	- parking to wait for <4b6fc615> (a java.util.concurrent.SynchronousQueue$Transferer)
	at java.base@21.0.7/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410)
	at java.base@21.0.7/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452)
	at java.base@21.0.7/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194)
	at java.base@21.0.7/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235)
	at java.base@21.0.7/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338)
	at java.base@21.0.7/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069)
	at java.base@21.0.7/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.base@21.0.7/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base@21.0.7/java.lang.Thread.runWith(Thread.java:1596)
	at java.base@21.0.7/java.lang.Thread.run(Thread.java:1583)
	at java.base@21.0.7/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186)

   Locked ownable synchronizers:
	- None

"Attach Listener" - Thread t@37
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"HikariPool-1 housekeeper" - Thread t@48
   java.lang.Thread.State: TIMED_WAITING
	at java.base@21.0.7/jdk.internal.misc.Unsafe.park(Native Method)
	- parking to wait for <70661538> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.base@21.0.7/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269)
	at java.base@21.0.7/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763)
	at java.base@21.0.7/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182)
	at java.base@21.0.7/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899)
	at java.base@21.0.7/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070)
	at java.base@21.0.7/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.base@21.0.7/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base@21.0.7/java.lang.Thread.runWith(Thread.java:1596)
	at java.base@21.0.7/java.lang.Thread.run(Thread.java:1583)

   Locked ownable synchronizers:
	- None