You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jcs-dev@jakarta.apache.org by as...@apache.org on 2005/01/07 23:29:17 UTC

cvs commit: jakarta-turbine-jcs/src/java/org/apache/jcs/utils/threadpool ThreadPool.java ThreadPoolManager.java

asmuts      2005/01/07 14:29:17

  Modified:    src/conf remote.cache.ccf remote.cache2.ccf
               src/java/org/apache/jcs/auxiliary/remote RemoteCache.java
                        RemoteCacheAttributes.java RemoteCacheNoWait.java
                        RemoteUtils.java
               src/java/org/apache/jcs/auxiliary/remote/server
                        RemoteCacheServer.java
                        RemoteCacheServerAttributes.java
                        RemoteCacheServerFactory.java
               src/test-conf TestBDBJEDiskCacheCon.ccf TestDiskCache.ccf
                        TestDiskCacheCon.ccf TestDiskCacheNoMemory.ccf
                        TestJCSvHashtablePerf.ccf TestTCPLateralCache.ccf
               src/test/org/apache/jcs/engine TestEventQueueConcurrent.java
               src/java/org/apache/jcs/utils/threadpool
                        ThreadPoolManager.java
  Added:       src/java/org/apache/jcs/utils/threadpool ThreadPool.java
  Log:
  Added the ability to set auxiliaries to use a thread pools in the event queue.  By default none are used and no
  threadpool configuration is necessary.  Everything is as is unless you configure it otherwise.
  
  No version update.  I need to make sure the indexed disk cache can function
  with more than one thread pulling out of the queue.
  
  Revision  Changes    Path
  1.5       +27 -0     jakarta-turbine-jcs/src/conf/remote.cache.ccf
  
  Index: remote.cache.ccf
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-jcs/src/conf/remote.cache.ccf,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- remote.cache.ccf	6 Jan 2005 04:44:28 -0000	1.4
  +++ remote.cache.ccf	7 Jan 2005 22:29:16 -0000	1.5
  @@ -92,3 +92,30 @@
   jcs.auxiliary.LCHTTP.attributes.httpReceiveServlet=/cache/LateralCacheReceiverServlet
   jcs.auxiliary.LCHTTP.attributes.httpDeleteServlet=/cache/DeleteCacheServlet
   
  +##############################################################
  +################## THREAD POOL CONFIGURATION ###################
  +# Default thread pool config
  +thread_pool.default.boundarySize=2000
  +thread_pool.default.maximumPoolSize=150
  +thread_pool.default.minimumPoolSize=4
  +thread_pool.default.keepAliveTime=350000
  +#RUN ABORT WAIT BLOCK DISCARDOLDEST
  +thread_pool.default.whenBlockedPolicy=RUN
  +thread_pool.default.startUpSize=4
  +
  +# Default Cache Event Queue thread pool config, used by auxiliaries
  +thread_pool.cache_event_queue.useBoundary=false
  +#thread_pool.cache_event_queue.boundarySize=2000
  +#thread_pool.cache_event_queue.maximumPoolSize=10
  +thread_pool.cache_event_queue.minimumPoolSize=5
  +thread_pool.cache_event_queue.keepAliveTime=3500
  +#thread_pool.cache_event_queue.whenBlockedPolicy=RUN
  +thread_pool.cache_event_queue.startUpSize=5
  +
  +# Remote cache client thread pool config
  +thread_pool.remote_cache_client.boundarySize=75
  +thread_pool.remote_cache_client.maximumPoolSize=150
  +thread_pool.remote_cache_client.minimumPoolSize=4
  +thread_pool.remote_cache_client.keepAliveTime=350000
  +thread_pool.remote_cache_client.whenBlockedPolicy=RUN
  +thread_pool.remote_cache_client.startUpSize=4
  
  
  
  1.3       +29 -0     jakarta-turbine-jcs/src/conf/remote.cache2.ccf
  
  Index: remote.cache2.ccf
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-jcs/src/conf/remote.cache2.ccf,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- remote.cache2.ccf	6 Nov 2003 17:42:14 -0000	1.2
  +++ remote.cache2.ccf	7 Jan 2005 22:29:16 -0000	1.3
  @@ -94,3 +94,32 @@
   jcs.auxiliary.LCHTTP.attributes.httpReceiveServlet=/cache/LateralCacheReceiverServlet
   jcs.auxiliary.LCHTTP.attributes.httpDeleteServlet=/cache/DeleteCacheServlet
   
  +
  +##############################################################
  +################## THREAD POOL CONFIGURATION ###################
  +# Default thread pool config
  +thread_pool.default.boundarySize=2000
  +thread_pool.default.maximumPoolSize=150
  +thread_pool.default.minimumPoolSize=4
  +thread_pool.default.keepAliveTime=350000
  +#RUN ABORT WAIT BLOCK DISCARDOLDEST
  +thread_pool.default.whenBlockedPolicy=RUN
  +thread_pool.default.startUpSize=4
  +
  +# Default Cache Event Queue thread pool config, used by auxiliaries
  +thread_pool.cache_event_queue.useBoundary=false
  +#thread_pool.cache_event_queue.boundarySize=2000
  +#thread_pool.cache_event_queue.maximumPoolSize=10
  +thread_pool.cache_event_queue.minimumPoolSize=5
  +thread_pool.cache_event_queue.keepAliveTime=3500
  +#thread_pool.cache_event_queue.whenBlockedPolicy=RUN
  +thread_pool.cache_event_queue.startUpSize=5
  +
  +# Remote cache client thread pool config
  +thread_pool.remote_cache_client.boundarySize=75
  +thread_pool.remote_cache_client.maximumPoolSize=150
  +thread_pool.remote_cache_client.minimumPoolSize=4
  +thread_pool.remote_cache_client.keepAliveTime=350000
  +thread_pool.remote_cache_client.whenBlockedPolicy=RUN
  +thread_pool.remote_cache_client.startUpSize=4
  +
  
  
  
  1.14      +16 -15    jakarta-turbine-jcs/src/java/org/apache/jcs/auxiliary/remote/RemoteCache.java
  
  Index: RemoteCache.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-jcs/src/java/org/apache/jcs/auxiliary/remote/RemoteCache.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- RemoteCache.java	6 Jan 2005 04:44:28 -0000	1.13
  +++ RemoteCache.java	7 Jan 2005 22:29:16 -0000	1.14
  @@ -21,36 +21,29 @@
   import java.io.IOException;
   import java.io.Serializable;
   import java.lang.reflect.InvocationTargetException;
  -
   import java.util.ArrayList;
  -import java.util.Arrays;
  -import java.util.List;
   import java.util.Set;
   
  +import org.apache.commons.logging.Log;
  +import org.apache.commons.logging.LogFactory;
   import org.apache.jcs.access.exception.ObjectNotFoundException;
  -
  +import org.apache.jcs.auxiliary.AuxiliaryCacheAttributes;
   import org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheAttributes;
   import org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheService;
  -
  -import org.apache.jcs.engine.behavior.IElementAttributes;
   import org.apache.jcs.engine.CacheConstants;
  -
   import org.apache.jcs.engine.behavior.ICache;
   import org.apache.jcs.engine.behavior.ICacheElement;
  -
  -import org.apache.commons.logging.Log;
  -import org.apache.commons.logging.LogFactory;
  -
  +import org.apache.jcs.engine.behavior.IElementAttributes;
   import org.apache.jcs.engine.behavior.IZombie;
   import org.apache.jcs.engine.stats.StatElement;
   import org.apache.jcs.engine.stats.Stats;
   import org.apache.jcs.engine.stats.behavior.IStatElement;
   import org.apache.jcs.engine.stats.behavior.IStats;
  +import org.apache.jcs.utils.threadpool.ThreadPool;
   import org.apache.jcs.utils.threadpool.ThreadPoolManager;
   
   import EDU.oswego.cs.dl.util.concurrent.Callable;
   import EDU.oswego.cs.dl.util.concurrent.FutureResult;
  -import EDU.oswego.cs.dl.util.concurrent.PooledExecutor;
   
   /**
    * Client proxy for an RMI remote cache.
  @@ -67,7 +60,7 @@
   
       IElementAttributes attr = null;
   
  -    private PooledExecutor pool = null;
  +    private ThreadPool pool = null;
       private boolean usePoolForGet = false;
   
       /** Description of the Method */
  @@ -448,12 +441,12 @@
         {
       	se = new StatElement();
          	se.setName( "Pool Size" );
  -    	se.setData("" + pool.getPoolSize() );
  +    	se.setData("" + pool.getPool().getPoolSize() );
       	elems.add(se);
   
       	se = new StatElement();
       	se.setName( "Maximum Pool Size" );
  -    	se.setData("" + pool.getMaximumPoolSize() );
  +    	se.setData("" + pool.getPool().getMaximumPoolSize() );
       	elems.add(se);
         }
   
  @@ -538,4 +531,12 @@
           }
           throw new IOException( ex.getMessage() );
       }
  +    
  +    /**
  +     * @return Returns the AuxiliaryCacheAttributes.
  +     */
  +    public AuxiliaryCacheAttributes getAuxiliaryCacheAttributes()
  +    {
  +      return irca;
  +    }    
   }
  
  
  
  1.7       +4 -50     jakarta-turbine-jcs/src/java/org/apache/jcs/auxiliary/remote/RemoteCacheAttributes.java
  
  Index: RemoteCacheAttributes.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-jcs/src/java/org/apache/jcs/auxiliary/remote/RemoteCacheAttributes.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- RemoteCacheAttributes.java	6 Jan 2005 01:26:38 -0000	1.6
  +++ RemoteCacheAttributes.java	7 Jan 2005 22:29:16 -0000	1.7
  @@ -18,6 +18,7 @@
    */
   
   
  +import org.apache.jcs.auxiliary.AbstractAuxiliaryCacheAttributes;
   import org.apache.jcs.auxiliary.AuxiliaryCacheAttributes;
   
   import org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheAttributes;
  @@ -27,12 +28,9 @@
    * Description of the Class
    *
    */
  -public class RemoteCacheAttributes implements IRemoteCacheAttributes
  +public class RemoteCacheAttributes extends AbstractAuxiliaryCacheAttributes
  +	implements IRemoteCacheAttributes
   {
  -
  -    private String cacheName;
  -    private String name;
  -
       private String remoteServiceName = IRemoteCacheConstants.REMOTE_CACHE_SERVICE_VAL;
       private String remoteHost;
       private int remotePort;
  @@ -168,51 +166,7 @@
       {
           this.remoteType = p;
       }
  -
  -
  -    /**
  -     * Sets the cacheName attribute of the RemoteCacheAttributes object
  -     *
  -     * @param s The new cacheName value
  -     */
  -    public void setCacheName( String s )
  -    {
  -        this.cacheName = s;
  -    }
  -
  -
  -    /**
  -     * Gets the cacheName attribute of the RemoteCacheAttributes object
  -     *
  -     * @return The cacheName value
  -     */
  -    public String getCacheName()
  -    {
  -        return this.cacheName;
  -    }
  -
  -
  -    /**
  -     * Gets the name attribute of the RemoteCacheAttributes object
  -     *
  -     * @return The name value
  -     */
  -    public String getName()
  -    {
  -        return this.name;
  -    }
  -
  -
  -    /**
  -     * Sets the name attribute of the RemoteCacheAttributes object
  -     *
  -     * @param name The new name value
  -     */
  -    public void setName( String name )
  -    {
  -        this.name = name;
  -    }
  -
  +  
   
       /** Description of the Method */
       public AuxiliaryCacheAttributes copy()
  
  
  
  1.12      +15 -4     jakarta-turbine-jcs/src/java/org/apache/jcs/auxiliary/remote/RemoteCacheNoWait.java
  
  Index: RemoteCacheNoWait.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-jcs/src/java/org/apache/jcs/auxiliary/remote/RemoteCacheNoWait.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- RemoteCacheNoWait.java	6 Jan 2005 01:26:38 -0000	1.11
  +++ RemoteCacheNoWait.java	7 Jan 2005 22:29:17 -0000	1.12
  @@ -20,11 +20,11 @@
   
   import java.io.IOException;
   import java.io.Serializable;
  +import java.rmi.UnmarshalException;
   import java.util.ArrayList;
   import java.util.Arrays;
   import java.util.List;
   import java.util.Set;
  -import java.rmi.UnmarshalException;
   
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  @@ -32,7 +32,7 @@
   import org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheService;
   import org.apache.jcs.engine.CacheAdaptor;
   import org.apache.jcs.engine.CacheConstants;
  -import org.apache.jcs.engine.CacheEventQueue;
  +import org.apache.jcs.engine.CacheEventQueueFactory;
   import org.apache.jcs.engine.behavior.ICacheElement;
   import org.apache.jcs.engine.behavior.ICacheEventQueue;
   import org.apache.jcs.engine.behavior.ICacheType;
  @@ -63,7 +63,13 @@
       public RemoteCacheNoWait( RemoteCache cache )
       {
           this.cache = cache;
  -        this.q = new CacheEventQueue( new CacheAdaptor( cache ), RemoteCacheInfo.listenerId, cache.getCacheName() );
  +        CacheEventQueueFactory fact = new CacheEventQueueFactory();         
  +        this.q = fact.createCacheEventQueue( new CacheAdaptor( cache ), 
  +            RemoteCacheInfo.listenerId, 
  +            cache.getCacheName(),                                                    
  +            cache.getAuxiliaryCacheAttributes().getEventQueuePoolName(), 
  +            cache.getAuxiliaryCacheAttributes().getEventQueueTypeFactoryCode() );
  +        
           if ( cache.getStatus() == CacheConstants.STATUS_ERROR )
           {
               q.destroy();
  @@ -232,7 +238,12 @@
           {
               q.destroy();
           }
  -        this.q = new CacheEventQueue( new CacheAdaptor( cache ), RemoteCacheInfo.listenerId, cache.getCacheName() );
  +        CacheEventQueueFactory fact = new CacheEventQueueFactory();         
  +        this.q = fact.createCacheEventQueue( new CacheAdaptor( cache ), 
  +            RemoteCacheInfo.listenerId, 
  +            cache.getCacheName(),                                                    
  +            cache.getAuxiliaryCacheAttributes().getEventQueuePoolName(), 
  +            cache.getAuxiliaryCacheAttributes().getEventQueueTypeFactoryCode() );
       }
   
       /** Description of the Method */
  
  
  
  1.5       +23 -2     jakarta-turbine-jcs/src/java/org/apache/jcs/auxiliary/remote/RemoteUtils.java
  
  Index: RemoteUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-jcs/src/java/org/apache/jcs/auxiliary/remote/RemoteUtils.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- RemoteUtils.java	15 Apr 2004 19:22:47 -0000	1.4
  +++ RemoteUtils.java	7 Jan 2005 22:29:17 -0000	1.5
  @@ -27,6 +27,7 @@
   import java.rmi.registry.LocateRegistry;
   import java.rmi.registry.Registry;
   
  +import java.util.Enumeration;
   import java.util.Properties;
   
   import org.apache.commons.logging.Log;
  @@ -74,13 +75,33 @@
               props.load( is );
               if ( log.isDebugEnabled() )
               {
  -                log.debug( "props.size=" + props.size() + ", " + props );
  +                log.debug( "props.size=" + props.size()  );
               }
  +
  +            if ( log.isDebugEnabled() )
  +            {
  +              if ( props != null )
  +              {
  +                Enumeration enum = props.keys();
  +                StringBuffer buf = new StringBuffer();
  +                while( enum.hasMoreElements() )
  +                {
  +                  String key = (String)enum.nextElement();
  +                  buf.append( "\n" + key + " = " + props.getProperty(key) );
  +                }
  +                log.debug( buf.toString() );
  +              }
  +              else 
  +              {
  +                log.debug( "props is null" );                
  +              }
  +            }
  +            
           }
           catch ( Exception ex )
           {
   
  -            log.debug( "Error loading remote properties = " + ex.getMessage() );
  +            log.error( "Error loading remote properties, for file name [" + propFile + "]", ex );
               // ignore;
           }
           finally
  
  
  
  1.20      +18 -14    jakarta-turbine-jcs/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServer.java
  
  Index: RemoteCacheServer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-jcs/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServer.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- RemoteCacheServer.java	6 Jan 2005 04:44:28 -0000	1.19
  +++ RemoteCacheServer.java	7 Jan 2005 22:29:17 -0000	1.20
  @@ -20,41 +20,34 @@
   
   import java.io.IOException;
   import java.io.Serializable;
  -
   import java.rmi.NotBoundException;
   import java.rmi.registry.Registry;
  -
   import java.rmi.server.ServerNotActiveException;
   import java.rmi.server.UnicastRemoteObject;
   import java.rmi.server.Unreferenced;
  -
  +import java.util.Collections;
   import java.util.Enumeration;
   import java.util.Hashtable;
   import java.util.Iterator;
   import java.util.Map;
   import java.util.Set;
  -import java.util.Collections;
   
  +import org.apache.commons.logging.Log;
  +import org.apache.commons.logging.LogFactory;
   import org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheAttributes;
   import org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheListener;
   import org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheObserver;
   import org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheService;
   import org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheServiceAdmin;
   import org.apache.jcs.auxiliary.remote.server.behavior.IRemoteCacheServerAttributes;
  -
  -import org.apache.jcs.engine.CacheEventQueue;
  +import org.apache.jcs.engine.CacheEventQueueFactory;
   import org.apache.jcs.engine.CacheListeners;
  -
   import org.apache.jcs.engine.behavior.ICacheElement;
   import org.apache.jcs.engine.behavior.ICacheEventQueue;
   import org.apache.jcs.engine.behavior.ICacheListener;
  -
   import org.apache.jcs.engine.control.CompositeCache;
   import org.apache.jcs.engine.control.CompositeCacheManager;
   
  -import org.apache.commons.logging.Log;
  -import org.apache.commons.logging.LogFactory;
  -
   /**
    * Provides remote cache services.
    *
  @@ -338,10 +331,14 @@
               log.error( e );
           }
   
  +        // TODO use JAMON
           if ( timing )
           {
               long end = System.currentTimeMillis();
  -            p1( "put took " + String.valueOf( end - start ) + " ms." );
  +            if( log.isDebugEnabled() )
  +            {
  +              log.debug( "put took " + String.valueOf( end - start ) + " ms." );              
  +            }
           }
   
           return;
  @@ -723,8 +720,15 @@
                   catch ( IOException ioe )
                   {
                   }
  -                //eventQMap.put(listener, new CacheEventQueue(listener, getRequester(), cacheName));
  -                eventQMap.put( listener, new CacheEventQueue( listener, id, cacheName ) );
  +                
  +                CacheEventQueueFactory fact = new CacheEventQueueFactory();   
  +                ICacheEventQueue q = fact.createCacheEventQueue( listener, 
  +                    id, 
  +                    cacheName,                                                    
  +                    rcsa.getEventQueuePoolName(), 
  +                    rcsa.getEventQueueTypeFactoryCode() );
  +                
  +                eventQMap.put( listener, q );
   
                   if ( log.isDebugEnabled() )
                   {
  
  
  
  1.6       +4 -49     jakarta-turbine-jcs/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServerAttributes.java
  
  Index: RemoteCacheServerAttributes.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-jcs/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServerAttributes.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- RemoteCacheServerAttributes.java	12 Jun 2004 02:33:05 -0000	1.5
  +++ RemoteCacheServerAttributes.java	7 Jan 2005 22:29:17 -0000	1.6
  @@ -18,6 +18,7 @@
    */
   
   
  +import org.apache.jcs.auxiliary.AbstractAuxiliaryCacheAttributes;
   import org.apache.jcs.auxiliary.AuxiliaryCacheAttributes;
   
   import org.apache.jcs.auxiliary.remote.server.behavior.IRemoteCacheServerAttributes;
  @@ -27,12 +28,10 @@
    * Description of the Class
    *
    */
  -public class RemoteCacheServerAttributes implements IRemoteCacheServerAttributes
  +public class RemoteCacheServerAttributes extends AbstractAuxiliaryCacheAttributes
  +	implements IRemoteCacheServerAttributes
   {
   
  -    private String cacheName;
  -    private String name;
  -
       private String remoteServiceName = IRemoteCacheConstants.REMOTE_CACHE_SERVICE_VAL;
       private String remoteHost;
       private int remotePort;
  @@ -120,51 +119,7 @@
           this.remoteType = p;
       }
   
  -
  -    /**
  -     * Sets the cacheName attribute of the RemoteCacheAttributes object
  -     *
  -     * @param s The new cacheName value
  -     */
  -    public void setCacheName( String s )
  -    {
  -        this.cacheName = s;
  -    }
  -
  -
  -    /**
  -     * Gets the cacheName attribute of the RemoteCacheAttributes object
  -     *
  -     * @return The cacheName value
  -     */
  -    public String getCacheName()
  -    {
  -        return this.cacheName;
  -    }
  -
  -
  -    /**
  -     * Gets the name attribute of the RemoteCacheAttributes object
  -     *
  -     * @return The name value
  -     */
  -    public String getName()
  -    {
  -        return this.name;
  -    }
  -
  -
  -    /**
  -     * Sets the name attribute of the RemoteCacheAttributes object
  -     *
  -     * @param name The new name value
  -     */
  -    public void setName( String name )
  -    {
  -        this.name = name;
  -    }
  -
  -
  +   
       /** Description of the Method */
       public AuxiliaryCacheAttributes copy()
       {
  
  
  
  1.8       +7 -1      jakarta-turbine-jcs/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServerFactory.java
  
  Index: RemoteCacheServerFactory.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-jcs/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServerFactory.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- RemoteCacheServerFactory.java	12 Jun 2004 02:33:05 -0000	1.7
  +++ RemoteCacheServerFactory.java	7 Jan 2005 22:29:17 -0000	1.8
  @@ -26,6 +26,7 @@
   import java.rmi.NotBoundException;
   import java.rmi.registry.Registry;
   
  +import java.util.Enumeration;
   import java.util.Properties;
   
   import org.apache.jcs.auxiliary.remote.RemoteUtils;
  @@ -75,12 +76,17 @@
                   return;
               }
   
  +            if ( log.isInfoEnabled() )
  +            {
  +              log.info( "ConfigFileName = [" + propFile + "]" );
  +            }
  +            
               // TODO: make automatic
               RemoteCacheServerAttributes rcsa = new RemoteCacheServerAttributes();
               rcsa.setConfigFileName( propFile );
   
               Properties prop = RemoteUtils.loadProps( propFile );
  -
  +                        
               String servicePortStr = prop.getProperty( REMOTE_CACHE_SERVICE_PORT );
               int servicePort = -1;
               try
  
  
  
  1.2       +29 -0     jakarta-turbine-jcs/src/test-conf/TestBDBJEDiskCacheCon.ccf
  
  Index: TestBDBJEDiskCacheCon.ccf
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-jcs/src/test-conf/TestBDBJEDiskCacheCon.ccf,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TestBDBJEDiskCacheCon.ccf	8 Jul 2004 00:50:47 -0000	1.1
  +++ TestBDBJEDiskCacheCon.ccf	7 Jan 2005 22:29:17 -0000	1.2
  @@ -43,3 +43,32 @@
   jcs.auxiliary.indexedDiskCache=org.apache.jcs.auxiliary.disk.bdbje.BDBJECacheFactory
   jcs.auxiliary.indexedDiskCache.attributes=org.apache.jcs.auxiliary.disk.bdbje.BDBJECacheAttributes
   jcs.auxiliary.indexedDiskCache.attributes.DiskPath=target/test-sandbox/bdbje-disk-cache-conc
  +
  +##############################################################
  +################## THREAD POOL CONFIGURATION ###################
  +# Default thread pool config
  +thread_pool.default.boundarySize=2000
  +thread_pool.default.maximumPoolSize=150
  +thread_pool.default.minimumPoolSize=4
  +thread_pool.default.keepAliveTime=350000
  +#RUN ABORT WAIT BLOCK DISCARDOLDEST
  +thread_pool.default.whenBlockedPolicy=RUN
  +thread_pool.default.startUpSize=4
  +
  +# Default Cache Event Queue thread pool config, used by auxiliaries
  +thread_pool.cache_event_queue.useBoundary=false
  +#thread_pool.cache_event_queue.boundarySize=2000
  +#thread_pool.cache_event_queue.maximumPoolSize=10
  +thread_pool.cache_event_queue.minimumPoolSize=5
  +thread_pool.cache_event_queue.keepAliveTime=3500
  +#thread_pool.cache_event_queue.whenBlockedPolicy=RUN
  +thread_pool.cache_event_queue.startUpSize=5
  +
  +# Remote cache client thread pool config
  +thread_pool.remote_cache_client.boundarySize=75
  +thread_pool.remote_cache_client.maximumPoolSize=150
  +thread_pool.remote_cache_client.minimumPoolSize=4
  +thread_pool.remote_cache_client.keepAliveTime=350000
  +thread_pool.remote_cache_client.whenBlockedPolicy=RUN
  +thread_pool.remote_cache_client.startUpSize=4
  +
  
  
  
  1.4       +29 -0     jakarta-turbine-jcs/src/test-conf/TestDiskCache.ccf
  
  Index: TestDiskCache.ccf
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-jcs/src/test-conf/TestDiskCache.ccf,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestDiskCache.ccf	15 May 2002 20:11:29 -0000	1.3
  +++ TestDiskCache.ccf	7 Jan 2005 22:29:17 -0000	1.4
  @@ -47,3 +47,32 @@
   jcs.auxiliary.indexedDiskCache2=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory
   jcs.auxiliary.indexedDiskCache2.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes
   jcs.auxiliary.indexedDiskCache2.attributes.DiskPath=target/test-sandbox/indexed-disk-cache2
  +
  +##############################################################
  +################## THREAD POOL CONFIGURATION ###################
  +# Default thread pool config
  +thread_pool.default.boundarySize=2000
  +thread_pool.default.maximumPoolSize=150
  +thread_pool.default.minimumPoolSize=4
  +thread_pool.default.keepAliveTime=350000
  +#RUN ABORT WAIT BLOCK DISCARDOLDEST
  +thread_pool.default.whenBlockedPolicy=RUN
  +thread_pool.default.startUpSize=4
  +
  +# Default Cache Event Queue thread pool config, used by auxiliaries
  +thread_pool.cache_event_queue.useBoundary=false
  +#thread_pool.cache_event_queue.boundarySize=2000
  +#thread_pool.cache_event_queue.maximumPoolSize=10
  +thread_pool.cache_event_queue.minimumPoolSize=5
  +thread_pool.cache_event_queue.keepAliveTime=3500
  +#thread_pool.cache_event_queue.whenBlockedPolicy=RUN
  +thread_pool.cache_event_queue.startUpSize=5
  +
  +# Remote cache client thread pool config
  +thread_pool.remote_cache_client.boundarySize=75
  +thread_pool.remote_cache_client.maximumPoolSize=150
  +thread_pool.remote_cache_client.minimumPoolSize=4
  +thread_pool.remote_cache_client.keepAliveTime=350000
  +thread_pool.remote_cache_client.whenBlockedPolicy=RUN
  +thread_pool.remote_cache_client.startUpSize=4
  +
  
  
  
  1.3       +38 -0     jakarta-turbine-jcs/src/test-conf/TestDiskCacheCon.ccf
  
  Index: TestDiskCacheCon.ccf
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-jcs/src/test-conf/TestDiskCacheCon.ccf,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestDiskCacheCon.ccf	15 May 2002 20:11:29 -0000	1.2
  +++ TestDiskCacheCon.ccf	7 Jan 2005 22:29:17 -0000	1.3
  @@ -42,4 +42,42 @@
   jcs.auxiliary.indexedDiskCache=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory
   jcs.auxiliary.indexedDiskCache.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes
   jcs.auxiliary.indexedDiskCache.attributes.DiskPath=target/test-sandbox/indexed-disk-cache-conc
  +jcs.auxiliary.indexedDiskCache.attributes.maxKeySize=10000
  +jcs.auxiliary.indexedDiskCache.attributes.optimizeAtRemoveCount=3000000
  +jcs.auxiliary.indexedDiskCache.attributes.EventQueueType=POOLED
  +jcs.auxiliary.indexedDiskCache.attributes.EventQueuePoolName=disk_cache_event_queue
   
  +
  +##############################################################
  +################## THREAD POOL CONFIGURATION ###################
  +# Default thread pool config
  +thread_pool.default.boundarySize=2000
  +thread_pool.default.maximumPoolSize=150
  +thread_pool.default.minimumPoolSize=4
  +thread_pool.default.keepAliveTime=350000
  +#RUN ABORT WAIT BLOCK DISCARDOLDEST
  +thread_pool.default.whenBlockedPolicy=RUN
  +thread_pool.default.startUpSize=4
  +
  +# Default Cache Event Queue thread pool config, used by auxiliaries
  +thread_pool.cache_event_queue.useBoundary=false
  +#thread_pool.cache_event_queue.boundarySize=2000
  +#thread_pool.cache_event_queue.maximumPoolSize=10
  +thread_pool.cache_event_queue.minimumPoolSize=1
  +thread_pool.cache_event_queue.keepAliveTime=3500
  +#thread_pool.cache_event_queue.whenBlockedPolicy=RUN
  +thread_pool.cache_event_queue.startUpSize=1
  +
  +# Disk Cache pool
  +thread_pool.disk_cache_event_queue.useBoundary=false
  +thread_pool.disk_cache_event_queue.minimumPoolSize=2
  +thread_pool.disk_cache_event_queue.keepAliveTime=3500
  +thread_pool.disk_cache_event_queue.startUpSize=1
  +
  +# Remote cache client thread pool config
  +thread_pool.remote_cache_client.boundarySize=75
  +thread_pool.remote_cache_client.maximumPoolSize=150
  +thread_pool.remote_cache_client.minimumPoolSize=4
  +thread_pool.remote_cache_client.keepAliveTime=350000
  +thread_pool.remote_cache_client.whenBlockedPolicy=RUN
  +thread_pool.remote_cache_client.startUpSize=4
  
  
  
  1.2       +28 -0     jakarta-turbine-jcs/src/test-conf/TestDiskCacheNoMemory.ccf
  
  Index: TestDiskCacheNoMemory.ccf
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-jcs/src/test-conf/TestDiskCacheNoMemory.ccf,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TestDiskCacheNoMemory.ccf	16 Nov 2004 07:36:22 -0000	1.1
  +++ TestDiskCacheNoMemory.ccf	7 Jan 2005 22:29:17 -0000	1.2
  @@ -47,3 +47,31 @@
   jcs.auxiliary.indexedDiskCache2=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory
   jcs.auxiliary.indexedDiskCache2.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes
   jcs.auxiliary.indexedDiskCache2.attributes.DiskPath=target/test-sandbox/indexed-disk-cache2-nomemory
  +
  +##############################################################
  +################## THREAD POOL CONFIGURATION ###################
  +# Default thread pool config
  +thread_pool.default.boundarySize=2000
  +thread_pool.default.maximumPoolSize=150
  +thread_pool.default.minimumPoolSize=4
  +thread_pool.default.keepAliveTime=350000
  +#RUN ABORT WAIT BLOCK DISCARDOLDEST
  +thread_pool.default.whenBlockedPolicy=RUN
  +thread_pool.default.startUpSize=4
  +
  +# Default Cache Event Queue thread pool config, used by auxiliaries
  +thread_pool.cache_event_queue.useBoundary=false
  +#thread_pool.cache_event_queue.boundarySize=2000
  +#thread_pool.cache_event_queue.maximumPoolSize=10
  +thread_pool.cache_event_queue.minimumPoolSize=5
  +thread_pool.cache_event_queue.keepAliveTime=3500
  +#thread_pool.cache_event_queue.whenBlockedPolicy=RUN
  +thread_pool.cache_event_queue.startUpSize=5
  +
  +# Remote cache client thread pool config
  +thread_pool.remote_cache_client.boundarySize=75
  +thread_pool.remote_cache_client.maximumPoolSize=150
  +thread_pool.remote_cache_client.minimumPoolSize=4
  +thread_pool.remote_cache_client.keepAliveTime=350000
  +thread_pool.remote_cache_client.whenBlockedPolicy=RUN
  +thread_pool.remote_cache_client.startUpSize=4
  
  
  
  1.2       +28 -0     jakarta-turbine-jcs/src/test-conf/TestJCSvHashtablePerf.ccf
  
  Index: TestJCSvHashtablePerf.ccf
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-jcs/src/test-conf/TestJCSvHashtablePerf.ccf,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TestJCSvHashtablePerf.ccf	22 Jul 2004 13:15:31 -0000	1.1
  +++ TestJCSvHashtablePerf.ccf	7 Jan 2005 22:29:17 -0000	1.2
  @@ -14,3 +14,31 @@
   jcs.region.testCache1.cacheattributes.MaxObjects=100000
   jcs.region.testCache1.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
   
  +
  +##############################################################
  +################## THREAD POOL CONFIGURATION ###################
  +# Default thread pool config
  +thread_pool.default.boundarySize=2000
  +thread_pool.default.maximumPoolSize=150
  +thread_pool.default.minimumPoolSize=4
  +thread_pool.default.keepAliveTime=350000
  +#RUN ABORT WAIT BLOCK DISCARDOLDEST
  +thread_pool.default.whenBlockedPolicy=RUN
  +thread_pool.default.startUpSize=4
  +
  +# Default Cache Event Queue thread pool config, used by auxiliaries
  +thread_pool.cache_event_queue.useBoundary=false
  +#thread_pool.cache_event_queue.boundarySize=2000
  +#thread_pool.cache_event_queue.maximumPoolSize=10
  +thread_pool.cache_event_queue.minimumPoolSize=5
  +thread_pool.cache_event_queue.keepAliveTime=3500
  +#thread_pool.cache_event_queue.whenBlockedPolicy=RUN
  +thread_pool.cache_event_queue.startUpSize=5
  +
  +# Remote cache client thread pool config
  +thread_pool.remote_cache_client.boundarySize=75
  +thread_pool.remote_cache_client.maximumPoolSize=150
  +thread_pool.remote_cache_client.minimumPoolSize=4
  +thread_pool.remote_cache_client.keepAliveTime=350000
  +thread_pool.remote_cache_client.whenBlockedPolicy=RUN
  +thread_pool.remote_cache_client.startUpSize=4
  
  
  
  1.2       +29 -0     jakarta-turbine-jcs/src/test-conf/TestTCPLateralCache.ccf
  
  Index: TestTCPLateralCache.ccf
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-jcs/src/test-conf/TestTCPLateralCache.ccf,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TestTCPLateralCache.ccf	15 May 2002 19:37:33 -0000	1.1
  +++ TestTCPLateralCache.ccf	7 Jan 2005 22:29:17 -0000	1.2
  @@ -30,3 +30,32 @@
   jcs.auxiliary.LTCP.attributes.TcpServers=localhost:1111
   jcs.auxiliary.LTCP.attributes.TcpListenerPort=1110
   jcs.auxiliary.LTCP.attributes.PutOnlyMode=true
  +
  +##############################################################
  +################## THREAD POOL CONFIGURATION ###################
  +# Default thread pool config
  +thread_pool.default.boundarySize=2000
  +thread_pool.default.maximumPoolSize=150
  +thread_pool.default.minimumPoolSize=4
  +thread_pool.default.keepAliveTime=350000
  +#RUN ABORT WAIT BLOCK DISCARDOLDEST
  +thread_pool.default.whenBlockedPolicy=RUN
  +thread_pool.default.startUpSize=4
  +
  +# Default Cache Event Queue thread pool config, used by auxiliaries
  +thread_pool.cache_event_queue.useBoundary=false
  +#thread_pool.cache_event_queue.boundarySize=2000
  +#thread_pool.cache_event_queue.maximumPoolSize=10
  +thread_pool.cache_event_queue.minimumPoolSize=5
  +thread_pool.cache_event_queue.keepAliveTime=3500
  +#thread_pool.cache_event_queue.whenBlockedPolicy=RUN
  +thread_pool.cache_event_queue.startUpSize=5
  +
  +# Remote cache client thread pool config
  +thread_pool.remote_cache_client.boundarySize=75
  +thread_pool.remote_cache_client.maximumPoolSize=150
  +thread_pool.remote_cache_client.minimumPoolSize=4
  +thread_pool.remote_cache_client.keepAliveTime=350000
  +thread_pool.remote_cache_client.whenBlockedPolicy=RUN
  +thread_pool.remote_cache_client.startUpSize=4
  +
  
  
  
  1.2       +1 -1      jakarta-turbine-jcs/src/test/org/apache/jcs/engine/TestEventQueueConcurrent.java
  
  Index: TestEventQueueConcurrent.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-jcs/src/test/org/apache/jcs/engine/TestEventQueueConcurrent.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TestEventQueueConcurrent.java	4 Jan 2005 21:12:21 -0000	1.1
  +++ TestEventQueueConcurrent.java	7 Jan 2005 22:29:17 -0000	1.2
  @@ -181,7 +181,7 @@
           // this becomes less accurate with each test. It should never fail. If
           // it does things are very off.
           assertTrue("The put count [" + listen.putCount
  -            + "] is below the expected minimum threshold", listen.putCount >= expectedPutCount);
  +            + "] is below the expected minimum threshold [" + expectedPutCount + "]", listen.putCount >= (expectedPutCount-1) );
   
       }
   
  
  
  
  1.3       +75 -25    jakarta-turbine-jcs/src/java/org/apache/jcs/utils/threadpool/ThreadPoolManager.java
  
  Index: ThreadPoolManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-jcs/src/java/org/apache/jcs/utils/threadpool/ThreadPoolManager.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ThreadPoolManager.java	6 Jan 2005 04:44:27 -0000	1.2
  +++ ThreadPoolManager.java	7 Jan 2005 22:29:17 -0000	1.3
  @@ -26,8 +26,11 @@
   
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  +import org.apache.jcs.utils.threadpool.behavior.IPoolConfiguration;
   
   import EDU.oswego.cs.dl.util.concurrent.BoundedBuffer;
  +import EDU.oswego.cs.dl.util.concurrent.Channel;
  +import EDU.oswego.cs.dl.util.concurrent.LinkedQueue;
   import EDU.oswego.cs.dl.util.concurrent.PooledExecutor;
   
   /**
  @@ -69,7 +72,9 @@
   
     // DEFAULT SETTINGS, these are not final since they can be set
     // via the Propeties file or object
  -  private static int               boundarySize_DEFAULT     = 75;
  +  private static boolean          useBoundary_DEFAULT     = true;
  +
  +  private static int               boundarySize_DEFAULT     = 2000;
   
     private static int               maximumPoolSize_DEFAULT  = 150;
   
  @@ -77,7 +82,7 @@
   
     private static int               keepAliveTime_DEFAULT    = 1000 * 60 * 5;
   
  -  private static boolean           abortWhenBlocked_DEFAULT = false;
  +  private static String            whenBlockedPolicy_DEFAULT = IPoolConfiguration.POLICY_RUN;
   
     private static int               startUpSize_DEFAULT      = 4;
   
  @@ -115,26 +120,60 @@
      * Creates a pool based on the configuration info.
      *
      * @param config
  -   * @return
  +   * @return  A ThreadPoll wrapper
      */
  -  private PooledExecutor createPool( PoolConfiguration config )
  +  private ThreadPool createPool( PoolConfiguration config )
     {
  -
  -    PooledExecutor pool = new PooledExecutor( new BoundedBuffer( config
  -        .getBoundarySize() ), config.getMaximumPoolSize() );
  +    PooledExecutor pool = null;
  +    Channel queue = null;
  +    if ( config.isUseBoundary() )
  +    {
  +      if ( log.isDebugEnabled() )
  +      {
  +        log.debug( "Creating a Bounded Buffer to use for the pool" );
  +      }
  +      queue = new BoundedBuffer( config.getBoundarySize() );
  +      pool = new PooledExecutor( queue , config.getMaximumPoolSize() );      
  +    }
  +    else 
  +    {
  +      if ( log.isDebugEnabled() )
  +      {
  +        log.debug( "Creating a non bounded Linked Queue to use for the pool" );
  +      }
  +      queue = new LinkedQueue();
  +      pool = new PooledExecutor( queue , config.getMaximumPoolSize() );            
  +    }
  +    
       pool.setMinimumPoolSize( config.getMinimumPoolSize() );
       pool.setKeepAliveTime( config.getKeepAliveTime() );
  -    if (config.isAbortWhenBlocked())
  +    
  +    // when blocked policy
  +    if (config.getWhenBlockedPolicy().equals( IPoolConfiguration.POLICY_ABORT))
       {
         pool.abortWhenBlocked();
       }
  -    else
  +    else if (config.getWhenBlockedPolicy().equals( IPoolConfiguration.POLICY_RUN))
       {
         pool.runWhenBlocked();
       }
  +    else if (config.getWhenBlockedPolicy().equals( IPoolConfiguration.POLICY_WAIT))
  +    {
  +      pool.waitWhenBlocked();
  +    }
  +    else if (config.getWhenBlockedPolicy().equals( IPoolConfiguration.POLICY_ABORT))
  +    {
  +      pool.abortWhenBlocked();
  +    }
  +    else if (config.getWhenBlockedPolicy().equals( IPoolConfiguration.POLICY_DISCARDOLDEST))
  +    {
  +      pool.discardOldestWhenBlocked();
  +    }
  +    
  +    
       pool.createThreads( config.getStartUpSize() );
   
  -    return pool;
  +    return new ThreadPool( pool, queue );
     }
   
     /**
  @@ -164,13 +203,13 @@
      * @param name
      * @return
      */
  -  public PooledExecutor getPool( String name )
  +  public ThreadPool getPool( String name )
     {
  -    PooledExecutor pool = null;
  +    ThreadPool pool = null;
   
       synchronized (pools)
       {
  -      pool = (PooledExecutor) pools.get( name );
  +      pool = (ThreadPool) pools.get( name );
         if (pool == null)
         {
           if (log.isDebugEnabled())
  @@ -311,9 +350,9 @@
   
       // set intial default and then override if new
       // settings are available
  -    defaultConfig = new PoolConfiguration( boundarySize_DEFAULT,
  +    defaultConfig = new PoolConfiguration( useBoundary_DEFAULT, boundarySize_DEFAULT,
           maximumPoolSize_DEFAULT, minimumPoolSize_DEFAULT,
  -        keepAliveTime_DEFAULT, abortWhenBlocked_DEFAULT, startUpSize_DEFAULT );
  +        keepAliveTime_DEFAULT, whenBlockedPolicy_DEFAULT, startUpSize_DEFAULT );
   
       defaultConfig = loadConfig( DEFAULT_PROP_NAME_ROOT );
   
  @@ -328,6 +367,19 @@
   
       PoolConfiguration config = (PoolConfiguration) defaultConfig.clone();
   
  +    if (props.containsKey( root + ".useBoundary" ))
  +    {
  +      try
  +      {
  +        config.setUseBoundary( Boolean.getBoolean( (String) props
  +            .get( root + ".useBoundary" ) ) );
  +      }
  +      catch (NumberFormatException nfe)
  +      {
  +        log.error( "useBoundary not a boolean.", nfe );
  +      }
  +    }
  +
       // load default if they exist
       if (props.containsKey( root + ".boundarySize" ))
       {
  @@ -342,6 +394,7 @@
         }
       }
   
  +    // maximum pool size
       if (props.containsKey( root + ".maximumPoolSize" ))
       {
         try
  @@ -355,6 +408,7 @@
         }
       }
   
  +    // minimum pool size
       if (props.containsKey( root + ".minimumPoolSize" ))
       {
         try
  @@ -368,6 +422,7 @@
         }
       }
   
  +    // keep alive
       if (props.containsKey( root + ".keepAliveTime" ))
       {
         try
  @@ -381,19 +436,14 @@
         }
       }
   
  -    if (props.containsKey( root + ".startUpSize" ))
  +    // when blocked
  +    if (props.containsKey( root + ".whenBlockedPolicy" ))
       {
  -      try
  -      {
  -        config.setAbortWhenBlocked( Boolean.getBoolean( (String) props
  -            .get( root + ".abortWhenBlocked" ) ) );
  -      }
  -      catch (NumberFormatException nfe)
  -      {
  -        log.error( "abortWhenBlocked not a boolean.", nfe );
  -      }
  +        config.setWhenBlockedPolicy( (String) props
  +            .get( root + ".whenBlockedPolicy" )  );
       }
   
  +    // startupsize
       if (props.containsKey( root + ".startUpSize" ))
       {
         try
  
  
  
  1.1                  jakarta-turbine-jcs/src/java/org/apache/jcs/utils/threadpool/ThreadPool.java
  
  Index: ThreadPool.java
  ===================================================================
  package org.apache.jcs.utils.threadpool;
  
  import EDU.oswego.cs.dl.util.concurrent.Channel;
  import EDU.oswego.cs.dl.util.concurrent.PooledExecutor;
  
  /**
   * This is simply a wrapper around the Pooled Excutor that allows clients to access
   * the queue.
   * 
   * @author aaronsm
   *
   */
  public class ThreadPool
  {
  
    private PooledExecutor pool = null;
    
    private Channel queue = null;
  
    /**
     * Create the wrapper.
     * 
     * @param pool
     * @param queue
     */
    public ThreadPool( PooledExecutor pool, Channel queue )
    {
      this.pool = pool;
      this.queue = queue;
    }
  
    /**
     * This is intended to give the client access to the PooledExecutor itself.
     * 
     * @return Returns the pool.
     */
    public PooledExecutor getPool()
    {
      return pool;
    }
  
    /**
     * @return Returns the queue.
     */
    public Channel getQueue()
    {
      return queue;
    }
   
    
    public void execute( Runnable run ) throws InterruptedException
    {
      pool.execute( run );
    }
    
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: turbine-jcs-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-jcs-dev-help@jakarta.apache.org