在NES上,是否期望有多个“发现工作者”和“保持活着”线程处于等待状态?
"DiscoveryWorker-10"
Id=62 WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@3c7f9371
at sun.misc.Unsafe.park(Native Method)
- waiting on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@3c7f9371
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
"KeepAliveWorker-4"
Id=61 WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@5ba8febe
at sun.misc.Unsafe.park(Native Method)
- waiting on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@5ba8febe
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)发布于 2014-05-07 07:39:11
是的,这是意料之中的。看起来,这些线程在线程池中等待,直到它们被发现或保持生存的任务所需。
在NiMi或Netty代码中等待很长时间的线程(在堆栈跟踪中应该是可见的),可能意味着存在某种通信问题。(例如,NimiConnectionImpl是DiscoveryWorker线程在写入Netty通道时等待的类之一)
https://stackoverflow.com/questions/23480181
复制相似问题