У меня есть приложение, и оно доставляет проблемы, некоторые его потоки остаются в стадии WAITING
, а некоторые ведут себя нормально. Все эти потоки в основном имеют одинаковую логику c и запускают несколько экземпляров.
После перезапуска приложения приложения снова начинают работать. Ниже приведены два потока, один из которых находится в TIMED_WAITING
, а другой - в WAITING
stage навсегда, если только я не перезапущу приложение.
"Worker-pool-app-c4738262-bfec-47fb-9741-cc8712084508-StreamThread-4-0_14" #62 daemon prio=5 os_prio=0 tid=0x00007f766d71f800 nid=0x11b waiting on condition [0x00007f760af59000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000006c2e0b690> (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.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1081)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
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)
"Worker-pool-app-c4738262-bfec-47fb-9741-cc8712084508-StreamThread-2-0_22" #61 daemon prio=5 os_prio=0 tid=0x00007f76500b5800 nid=0xea waiting on condition [0x00007f760b05a000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000006c25bc550> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
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)
Я не специалист по многопоточности и дампам потоков , следовательно, ищет входные данные о том, что может быть причиной такого поведения. Может кто-нибудь дать представление о том, как искать подсказку, которая вызывает проблему.