[jboss-svn-commits] JBL Code SVN: r10474 - labs/jbossesb/branches/JBESB_4_0_MP1/product/core/listeners/src/org/jboss/soa/esb/listeners/message.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Mar 23 09:52:55 EDT 2007


Author: kevin.conner at jboss.com
Date: 2007-03-23 09:52:54 -0400 (Fri, 23 Mar 2007)
New Revision: 10474

Modified:
   labs/jbossesb/branches/JBESB_4_0_MP1/product/core/listeners/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java
Log:
Added notifications between threads

Modified: labs/jbossesb/branches/JBESB_4_0_MP1/product/core/listeners/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_0_MP1/product/core/listeners/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java	2007-03-23 13:51:55 UTC (rev 10473)
+++ labs/jbossesb/branches/JBESB_4_0_MP1/product/core/listeners/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java	2007-03-23 13:52:54 UTC (rev 10474)
@@ -43,7 +43,6 @@
 import org.jboss.soa.esb.listeners.RegistryUtil;
 import org.jboss.soa.esb.listeners.lifecycle.AbstractThreadedManagedLifecycle;
 import org.jboss.soa.esb.listeners.lifecycle.ManagedLifecycleException;
-import org.jboss.soa.esb.listeners.lifecycle.ManagedLifecycleThreadState;
 import org.jboss.soa.esb.message.Message;
 import org.jboss.soa.esb.services.registry.RegistryException;
 import org.jboss.soa.esb.util.Util;
@@ -232,12 +231,8 @@
             while (isRunning())
             {
                 // Only pickup a message when a thread is available
-                if (getActiveThreadCount() >= _maxThreads)
+                if (waitForThread(_pauseLapseInMillis))
                 {
-                    waitForRunningStateChange(ManagedLifecycleThreadState.STOPPING, _pauseLapseInMillis) ;
-                }
-                else
-                {
                     waitForEventAndProcess(100) ;
                 }
             }
@@ -342,12 +337,22 @@
             }
         }
 
-        private int getActiveThreadCount()
+        private boolean waitForThread(final long delay)
         {
-            synchronized (_synchThreads)
+            boolean result = true ;
+            synchronized(_synchThreads)
             {
-                return _qRunningThreads ;
+                if (_qRunningThreads >= _maxThreads)
+                {
+                    try
+                    {
+                        _synchThreads.wait(delay) ;
+                    }
+                    catch (final InterruptedException ie) {}
+                    result = _qRunningThreads < _maxThreads ;
+                }
             }
+            return result ;
         }
 
         private void updateThreadCount(Integer i)
@@ -355,6 +360,10 @@
             synchronized (_synchThreads)
             {
                 _qRunningThreads += i.intValue();
+                if (_qRunningThreads < _maxThreads)
+                {
+                    _synchThreads.notifyAll() ;
+                }
             }
         }
 
@@ -368,7 +377,7 @@
 
         private int _maxThreads;
 
-        private int _defaultMaxThreads;
+        private int _defaultMaxThreads = 1;
         
         private long _latencySecs;
         




More information about the jboss-svn-commits mailing list