Как отладить заблокированный вызов Future.get()?

#java #concurrency #future

#java #параллелизм #будущее

Вопрос:

У меня есть код, который ожидает метод Future.get(), он никогда не возвращается. Я сгенерировал дамп потока, который указывает, что он ожидает другого потока <0x000000075e538dd0> . Когда я пытаюсь выполнить поиск потока с этим идентификатором потока, я не смог найти ни одной записи, о чем это мне говорит?

 "Reader #9[worker][-1f2e83ef:1579b13caa9:-722e][AttributeJoinCollator]" #512 prio=5 os_prio=0 tid=0x000000002254f800 nid=0x7374 waiting on condition     [0x00000000427ae000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x000000075e538dd0> (a         java.util.concurrent.FutureTask)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:429)
at java.util.concurrent.FutureTask.get(FutureTask.java:191)
at my.code.here(MyClass.java:416)
  

Комментарии:

1. Какой механизм обратного вызова вы используете, который инициирует get() вызов?

2. Мы используем org.springframework.scheduling.concurrent. ThreadPoolTaskExecutor.getThreadPoolExecutor.submit(вызываемый)