Author: trustin
Date: Tue Feb 19 19:33:32 2008
New Revision: 629332

URL: http://svn.apache.org/viewvc?rev=629332&view=rev
Log:
Fixed issue: DIRMINA-523 (Default thread model should be created lazily)
* The default thread model is created on demand now to suppress unnecessary 
creation of daemon threads


Modified:
    
mina/branches/1.0/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java
    
mina/branches/1.1/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java

Modified: 
mina/branches/1.0/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java
URL: 
http://svn.apache.org/viewvc/mina/branches/1.0/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java?rev=629332&r1=629331&r2=629332&view=diff
==============================================================================
--- 
mina/branches/1.0/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java
 (original)
+++ 
mina/branches/1.0/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java
 Tue Feb 19 19:33:32 2008
@@ -40,15 +40,14 @@
     private IoFilterChainBuilder filterChainBuilder = new 
DefaultIoFilterChainBuilder();
 
     /**
-     * The default thread model.
+     * The default thread model (initialized lazily).
      */
-    private final ThreadModel defaultThreadModel = ExecutorThreadModel
-            .getInstance("AnonymousIoService");
+    private ThreadModel defaultThreadModel;
 
     /**
      * Current thread model.
      */
-    private ThreadModel threadModel = defaultThreadModel;
+    private ThreadModel threadModel;
 
     public BaseIoServiceConfig() {
         super();
@@ -75,6 +74,9 @@
     }
 
     public ThreadModel getThreadModel() {
+        if (threadModel == null) {
+            threadModel = getDefaultThreadModel();
+        }
         return threadModel;
     }
 
@@ -82,9 +84,16 @@
         if (threadModel == null) {
             // We reuse the previous default model to prevent too much
             // daemon threads are created.
-            threadModel = defaultThreadModel;
+            threadModel = getDefaultThreadModel();
         }
         this.threadModel = threadModel;
+    }
+
+    private synchronized ThreadModel getDefaultThreadModel() {
+        if (defaultThreadModel == null) {
+            defaultThreadModel = 
ExecutorThreadModel.getInstance("AnonymousIoService");
+        }
+        return defaultThreadModel;
     }
 
     public Object clone() {

Modified: 
mina/branches/1.1/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java
URL: 
http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java?rev=629332&r1=629331&r2=629332&view=diff
==============================================================================
--- 
mina/branches/1.1/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java
 (original)
+++ 
mina/branches/1.1/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java
 Tue Feb 19 19:33:32 2008
@@ -40,15 +40,14 @@
     private IoFilterChainBuilder filterChainBuilder = new 
DefaultIoFilterChainBuilder();
 
     /**
-     * The default thread model.
+     * The default thread model (initialized lazily).
      */
-    private final ThreadModel defaultThreadModel = ExecutorThreadModel
-            .getInstance("AnonymousIoService");
+    private ThreadModel defaultThreadModel;
 
     /**
      * Current thread model.
      */
-    private ThreadModel threadModel = defaultThreadModel;
+    private ThreadModel threadModel;
 
     public BaseIoServiceConfig() {
         super();
@@ -75,6 +74,9 @@
     }
 
     public ThreadModel getThreadModel() {
+        if (threadModel == null) {
+            threadModel = getDefaultThreadModel();
+        }
         return threadModel;
     }
 
@@ -82,11 +84,17 @@
         if (threadModel == null) {
             // We reuse the previous default model to prevent too much
             // daemon threads are created.
-            threadModel = defaultThreadModel;
+            threadModel = getDefaultThreadModel();
         }
         this.threadModel = threadModel;
     }
 
+    private synchronized ThreadModel getDefaultThreadModel() {
+        if (defaultThreadModel == null) {
+            defaultThreadModel = 
ExecutorThreadModel.getInstance("AnonymousIoService");
+        }
+        return defaultThreadModel;
+    }
     @Override
     public Object clone() {
         BaseIoServiceConfig ret;


Reply via email to