Author: trustin
Date: Fri Nov  9 23:55:04 2007
New Revision: 593749

URL: http://svn.apache.org/viewvc?rev=593749&view=rev
Log:
Applied the changes in OrderedThreadPoolExecutor to UnorderedThreadPoolExecutor

Modified:
    
mina/trunk/core/src/main/java/org/apache/mina/filter/executor/UnorderedThreadPoolExecutor.java

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/filter/executor/UnorderedThreadPoolExecutor.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/executor/UnorderedThreadPoolExecutor.java?rev=593749&r1=593748&r2=593749&view=diff
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/filter/executor/UnorderedThreadPoolExecutor.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/filter/executor/UnorderedThreadPoolExecutor.java
 Fri Nov  9 23:55:04 2007
@@ -182,17 +182,18 @@
     
     @Override
     public void setMaximumPoolSize(int maximumPoolSize) {
+        if (maximumPoolSize <= 0 || maximumPoolSize < corePoolSize) {
+            throw new IllegalArgumentException("maximumPoolSize: "
+                    + maximumPoolSize);
+        }
+
         synchronized (workers) {
-            if (maximumPoolSize == 0 || maximumPoolSize < corePoolSize) {
-                throw new IllegalArgumentException("maximumPoolSize: " + 
maximumPoolSize);
-            }
-            
-            if (this.maximumPoolSize > maximumPoolSize) {
-                for (int i = this.maximumPoolSize - maximumPoolSize; i > 0; i 
--) {
-                    removeWorker();
-                }
-            }
             this.maximumPoolSize = maximumPoolSize;
+            int difference = workers.size() - maximumPoolSize;
+            while (difference > 0) {
+                removeWorker();
+                --difference;
+            }
         }
     }
     
@@ -387,7 +388,10 @@
         if (corePoolSize < 0) {
             throw new IllegalArgumentException("corePoolSize: " + 
corePoolSize);
         }
-        
+        if (corePoolSize > maximumPoolSize) {
+            throw new IllegalArgumentException("corePoolSize exceeds 
maximumPoolSize");
+        }
+                
         synchronized (workers) {
             if (this.corePoolSize > corePoolSize) {
                 for (int i = this.corePoolSize - corePoolSize; i > 0; i --) {


Reply via email to