您如何知道在Java中线程是从哪个类实例化的

您如何知道在Java中线程是从哪个类实例化的,java,jvm,Java,Jvm,我使用jstack,下面是关于线程(pool-60-thread-455)堆栈信息, 我使用了默认的线程名称, 如何获取实例化线程(pool-60-thread-455)的类 "pool-60-thread-455" #1665229 prio=5 os_prio=0 tid=0x00007f9ebc3f0000 nid=0xb603 waiting on condition [0x00007f9e34cc4000] java.lang.Thread.State: WA

我使用jstack,下面是关于线程(pool-60-thread-455)堆栈信息, 我使用了默认的线程名称, 如何获取实例化线程(pool-60-thread-455)的类

"pool-60-thread-455" #1665229 prio=5 os_prio=0 tid=0x00007f9ebc3f0000 nid=0xb603 waiting on condition [0x00007f9e34cc4000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x000000076957aae8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
“pool-60-thread-455”#1665229 prio=5 os#u prio=0 tid=0x00007f9ebc3f000nid=0xb603等待条件[0x00007f9e34cc4000]
java.lang.Thread.State:等待(停车)
在sun.misc.Unsafe.park(本机方法)
-停车等待(java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
位于java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
位于java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
位于java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
位于java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
运行(Thread.java:745)

线程已在
ThreadPoolExecutor
中实例化@Holger是,有没有办法知道ThreadPoolExecutor在哪里实例化?不是从这个堆栈跟踪。但普通应用程序不会创建大量线程池。只需在代码中搜索这个点。@Holger我们的应用程序有50多个线程池,所以我想知道线程池在哪里实例化。这听起来像是应用程序设计的一个基本问题。或者对线程池的用途缺乏了解。无论如何,每个heap-dup分析工具都可以告诉您存在哪些线程池以及谁持有对它的引用。这与“谁创造了它”并不完全相同,但通常,创造者持有对其创造的引用。