0
我正在使用java服务器应用程序中的jWebsocket lib执行一些压力测试(每分钟有数千个连接),并且在一段时间后,该进程完全充满了jWebsocket线程,例如以下:jWebsocket大量停放的线程(等待)
"jWebSocket TCP-Engine NIO writer" prio=10 tid=0x0000000000bf6000 nid=0x2eb9 waiting on condition [0x00007f1533bd9000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x000000062ab06e80> (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(LinkedBlockingQueue.java:442)
at 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:745)
(上面的输出是从一个线程转储检索)
有没有人遇到这个问题?任何提示找到解决方案?
谢谢!
编辑。
最大的问题是线程永远不会被终止并保持活动状态,直到应用程序终止。
我忘了提一个非常重要的注意事项:)线程不被破坏,直到应用程序保持活力重新启动。 –
我为你提供了“杀死”解决方案以防万一。你看到的是完全正常的,线程正在等待新任务,给他们工作要做,他们将开始运行你的任务 – hoaz