You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by tr...@apache.org on 2007/11/10 08:55:07 UTC

svn commit: r593749 - /mina/trunk/core/src/main/java/org/apache/mina/filter/executor/UnorderedThreadPoolExecutor.java

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 --) {