2012-11-12 3 views
0

Nous sommes confrontés à ce problème qui indique que le pool de threads client est saturé. Y at-il une limite sur le nombre de threads créés sur le client JVMClient Java Threadpool complet

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

Nous aurons probablement besoin de voir le code de 'com.splwg.oms.client.util.ClientThreadPool' pour vous aider. –

Répondre

2

Cela signifie que votre pool de threads ne peut pas effectuer les tâches aussi vite qu'ils sont ajoutés - la file d'attente ne cesse de croître jusqu'à ce que vous manquez d'espace. Solutions:

  • plusieurs fils (il y a une limite passé que vous n'aurez pas d'amélioration)
  • plus ou file d'attente illimitée (solution partielle, ne fera que retarder le problème)
  • tâches plus petites (votre meilleur bet)
+0

Je n'ai pas accès au code source (nous ne recevons que les binaires du fournisseur). Cela peut-il être dû au fait que les threads ne sont pas fermés dans le code une fois le travail terminé? – Tejas

+0

Vous ne devez pas fermer les threads - les threads sont gérés et réutilisés dans la mesure du possible (ce qui vous permet d'améliorer les performances). Cependant, vos tâches doivent se terminer à un certain point (appel implicite ou retour explicite). Il se peut que vos tâches essaient de prendre soin de leur propre cycle de vie, en incluant leur code dans un while (true) {} loop (ou similaire) – thedayofcondor