2012-11-12 2 views
0

우리는 클라이언트 스레드 풀이 꽉 찼다는이 문제를 겪고 있습니다. 클라이언트에서 생성 된 스레드의 수에 제한이 JVM자바 클라이언트 스레드 풀

2012-11-12 10:09:54,206 [AWT-EventQueue-0] ERROR com.splwg.oms.client.util.ClientThreadPool: The client thread pool is full 
java.lang.Exception: Stack Trace: 
       at com.splwg.oms.client.util.ClientThreadPool.dumpExtendedStack(ClientThreadPool.java:49) 
       at com.splwg.oms.client.util.ClientThreadPool$MyRejectedHandler.rejectedExecution(ClientThreadPool.java:169) 
       at java.util.concurrent.ThreadPoolExecutor.reject(Unknown Source) 
       at java.util.concurrent.ThreadPoolExecutor.execute(Unknown Source) 
       at java.util.concurrent.AbstractExecutorService.submit(Unknown Source) 
       at com.splwg.oms.jbot.adapter.JBotAdapter.processCommands(JBotAdapter.java:652) 
       at com.splwg.oms.jbot.adapter.JBotAdapter.processEvent(JBotAdapter.java:591) 
       at com.splwg.oms.jbot.listener.JTableAdapterListener.valueChanged(JTableAdapterListener.java:106) 
       at com.splwg.oms.jbot.listener.JTableAdapterListener.selected(JTableAdapterListener.java:41) 
       at com.splwg.oms.jbot.component.JBotTable.fireJBotSelection(JBotTable.java:376) 
       at com.splwg.oms.jbot.component.JBotTable.changeSelection(JBotTable.java:240) 
       at javax.swing.plaf.basic.BasicTableUI$Handler.mouseDragged(Unknown Source) 
       at java.awt.AWTEventMulticaster.mouseDragged(Unknown Source) 
       at java.awt.Component.processMouseMotionEvent(Unknown Source) 
       at javax.swing.JComponent.processMouseMotionEvent(Unknown Source) 
       at java.awt.Component.processEvent(Unknown Source) 
       at java.awt.Container.processEvent(Unknown Source) 
       at java.awt.Component.dispatchEventImpl(Unknown Source) 
       at java.awt.Container.dispatchEventImpl(Unknown Source) 
       at java.awt.Component.dispatchEvent(Unknown Source) 
       at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
       at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
       at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
       at java.awt.Container.dispatchEventImpl(Unknown Source) 
       at java.awt.Window.dispatchEventImpl(Unknown Source) 
       at java.awt.Component.dispatchEvent(Unknown Source) 
       at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
       at java.awt.EventQueue.access$000(Unknown Source) 
       at java.awt.EventQueue$1.run(Unknown Source) 
       at java.awt.EventQueue$1.run(Unknown Source) 
       at java.security.AccessController.doPrivileged(Native Method) 
       at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) 
       at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) 
       at java.awt.EventQueue$2.run(Unknown Source) 
       at java.awt.EventQueue$2.run(Unknown Source) 
       at java.security.AccessController.doPrivileged(Native Method) 
       at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) 
       at java.awt.EventQueue.dispatchEvent(Unknown Source) 
       at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
       at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
       at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
       at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
       at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
       at java.awt.EventDispatchThread.run(Unknown Source) 
2012-11-12 10:09:54,206 [AWT-EventQueue-0] ERROR com.splwg.oms.jbot.adapter.JDialogAdapter: eventID = SelectPerform 
java.util.concurrent.RejectedExecutionException 
       at com.splwg.oms.client.util.ClientThreadPool$MyRejectedHandler.rejectedExecution(ClientThreadPool.java:170) 
       at java.util.concurrent.ThreadPoolExecutor.reject(Unknown Source) 
       at java.util.concurrent.ThreadPoolExecutor.execute(Unknown Source) 
       at java.util.concurrent.AbstractExecutorService.submit(Unknown Source) 
       at com.splwg.oms.jbot.adapter.JBotAdapter.processCommands(JBotAdapter.java:652) 
       at com.splwg.oms.jbot.adapter.JBotAdapter.processEvent(JBotAdapter.java:591) 
       at com.splwg.oms.jbot.listener.JTableAdapterListener.valueChanged(JTableAdapterListener.java:106) 
       at com.splwg.oms.jbot.listener.JTableAdapterListener.selected(JTableAdapterListener.java:41) 
       at com.splwg.oms.jbot.component.JBotTable.fireJBotSelection(JBotTable.java:376) 
       at com.splwg.oms.jbot.component.JBotTable.changeSelection(JBotTable.java:240) 
       at javax.swing.plaf.basic.BasicTableUI$Handler.mouseDragged(Unknown Source) 
       at java.awt.AWTEventMulticaster.mouseDragged(Unknown Source) 
       at java.awt.Component.processMouseMotionEvent(Unknown Source) 
       at javax.swing.JComponent.processMouseMotionEvent(Unknown Source) 
       at java.awt.Component.processEvent(Unknown Source) 
       at java.awt.Container.processEvent(Unknown Source) 
       at java.awt.Component.dispatchEventImpl(Unknown Source) 
       at java.awt.Container.dispatchEventImpl(Unknown Source) 
       at java.awt.Component.dispatchEvent(Unknown Source) 
       at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
       at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
       at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
       at java.awt.Container.dispatchEventImpl(Unknown Source) 
       at java.awt.Window.dispatchEventImpl(Unknown Source) 
       at java.awt.Component.dispatchEvent(Unknown Source) 
       at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
       at java.awt.EventQueue.access$000(Unknown Source) 
       at java.awt.EventQueue$1.run(Unknown Source) 
       at java.awt.EventQueue$1.run(Unknown Source) 
       at java.security.AccessController.doPrivileged(Native Method) 
       at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) 
       at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) 
       at java.awt.EventQueue$2.run(Unknown Source) 
       at java.awt.EventQueue$2.run(Unknown Source) 
       at java.security.AccessController.doPrivileged(Native Method) 
       at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) 
       at java.awt.EventQueue.dispatchEvent(Unknown Source) 
       at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
       at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
       at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
       at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
       at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
       at java.awt.EventDispatchThread.run(Unknown Source) 
+0

우리는 아마도 이것을 돕기 위해'com.splwg.oms.client.util.ClientThreadPool'에 대한 코드를 볼 수 있어야 할 것입니다. –

답변

2

이 스레드 풀은 빨리 그들이 추가로 작업을 완료 할 수 없음을 의미 - 당신이 공간이 부족할 때까지 큐가 성장 유지합니다. 솔루션 :

  • 더 많은 스레드는 (최고의
  • 크거나 무제한 큐 (부분적인 해결책 만 문제를 지연됩니다)
  • 작은 작업 (당신이 어떤 개선이 없을 것이다 과거 한계가있다) 내기)
+0

I 소스 코드에 액세스 할 수 없습니다 (공급 업체의 바이너리 만 제공). 작업이 완료되면 코드에서 닫히지 않는 스레드가 원인 일 수 있습니까? – Tejas

+0

스레드를 닫아서는 안됩니다. 가능한 경우 스레드를 관리하고 재사용합니다 (성능이 향상됩니다). 그러나 작업은 특정 시점 (암시 적 또는 명시 적으로 호출)에서 종료되어야합니다. 자신의 라이프 사이클을 돌보고 while (true) {} 루프 (또는 유사)에 코드를 포함시키려는 시도가있을 수 있습니다. – thedayofcondor