#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(вызываемый)