我在glassfish 3服务器上遇到了问题。日志正在抛出消息
java.util.concurrent.RejectedExecutionException:线程池的任务队列已满,限制: 256
我做了几个线程转储,发现有16个线程在等待同一个锁,例如:
“__ejb- java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043) - nid=0x1c08”守护进程线程池等待条件0x3297f000 java.lang.Thread.State:正在等待(暂留) at sun.misc.Unsafe.park(本地方法)-暂留以等待池(位于java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043) at java.util.concurrent.LinkedBlockingQueue.take(的java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)处的java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724)
锁定的可拥有同步器:-无
“__ejb- java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043) - nid=0x1a3c 2”守护进程线程池等待条件0x3ad3f000 java.lang.Thread.State: WAITING ( parking ) at sun.misc.Unsafe.park(本地方法)-parking to wait <0x117b2cb0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043) at java.util.concurrent.LinkedBlockingQueue.take( )java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724)
已锁定的可拥有同步器:-无...
这是正常的吗?我以为我会在线程转储中找到拥有锁的线程,但没有。请帮帮忙。我是线程分析的新手。
发布于 2018-04-27 05:02:17
如果某个executor服务有16个theads什么也不做,那么它们都在等待任务队列中显示的东西是完全正常的。
被拒绝的执行可能发生在与创建线程快照时不同的时刻。这只意味着提交数量激增,队列更早出现了溢出。
不过要小心,这些被拒绝的执行可能甚至不在您正在查看的executor服务上。这取决于其他地方还有多少其他的executor服务。
https://stackoverflow.com/questions/50050751
复制相似问题