commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rwaldh...@apache.org
Subject cvs commit: jakarta-commons/pool/src/java/org/apache/commons/pool/impl GenericObjectPool.java
Date Fri, 01 Nov 2002 23:58:40 GMT
rwaldhoff    2002/11/01 15:58:40

  Modified:    pool/src/java/org/apache/commons/pool/impl
                        GenericObjectPool.java
  Log:
  extract method startEvictor
  
  Revision  Changes    Path
  1.11      +36 -36    jakarta-commons/pool/src/java/org/apache/commons/pool/impl/GenericObjectPool.java
  
  Index: GenericObjectPool.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/pool/src/java/org/apache/commons/pool/impl/GenericObjectPool.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- GenericObjectPool.java	31 Oct 2002 18:56:11 -0000	1.10
  +++ GenericObjectPool.java	1 Nov 2002 23:58:40 -0000	1.11
  @@ -394,12 +394,7 @@
           _testWhileIdle = testWhileIdle;
   
           _pool = new CursorableLinkedList();
  -        if(_timeBetweenEvictionRunsMillis > 0) {
  -            _evictor = new Evictor();
  -            Thread t = new Thread(_evictor);
  -            t.setDaemon(true);
  -            t.start();
  -        }
  +        startEvictor(_timeBetweenEvictionRunsMillis);
       }
   
       //--- public methods ---------------------------------------------
  @@ -596,19 +591,8 @@
        * @see #getTimeBetweenEvictionRunsMillis
        */
       public synchronized void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis)
{
  -        if(_timeBetweenEvictionRunsMillis > 0 && timeBetweenEvictionRunsMillis
<= 0) {
  -            _evictor.cancel();
  -            _evictor = null;
  -            _timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
  -        } else if(_timeBetweenEvictionRunsMillis <= 0 && timeBetweenEvictionRunsMillis
> 0) {
  -            _timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
  -            _evictor = new Evictor();
  -            Thread t = new Thread(_evictor);
  -            t.setDaemon(true);
  -            t.start();
  -        } else {
  -            _timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
  -        }
  +        _timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
  +        startEvictor(_timeBetweenEvictionRunsMillis);
       }
   
       /**
  @@ -838,10 +822,7 @@
               _evictionCursor.close();
               _evictionCursor = null;
           }
  -        if(null != _evictor) {
  -            _evictor.cancel();
  -            _evictor = null;
  -        }
  +        startEvictor(-1L);
       }
   
       synchronized public void setFactory(PoolableObjectFactory factory) throws IllegalStateException
{
  @@ -913,8 +894,26 @@
           }
       }
       
  -    //--- package methods --------------------------------------------
  +    //--- non-public methods ----------------------------------------
   
  +    /**
  +     * Start the eviction thread or service, or when 
  +     * <i>delay</i> is non-positive, stop it
  +     * if it is already running.
  +     */
  +    protected synchronized void startEvictor(long delay) {
  +        if(null != _evictor) {
  +            _evictor.cancel();
  +            _evictor = null;
  +        }
  +        if(delay > 0) {
  +            _evictor = new Evictor(delay);
  +            Thread t = new Thread(_evictor);
  +            t.setDaemon(true);
  +            t.start();
  +        }
  +    }
  +    
       synchronized String debugInfo() {
           StringBuffer buf = new StringBuffer();
           buf.append("Active: ").append(getNumActive()).append("\n");
  @@ -962,22 +961,23 @@
        * @see #setTimeBetweenEvictionRunsMillis
        */
       class Evictor implements Runnable {
  -        protected boolean _cancelled = false;
  -
  +        private boolean _cancelled = false;
  +        private long _delay = 0L;
  +        
  +        public Evictor(long delay) {
  +            _delay = delay;
  +        }
  +        
           void cancel() {
               _cancelled = true;
           }
   
           public void run() {
               while(!_cancelled) {
  -                long sleeptime = 0L;
  -                synchronized(GenericObjectPool.this) {
  -                    sleeptime = _timeBetweenEvictionRunsMillis;
  -                }
                   try {
  -                    Thread.currentThread().sleep(sleeptime);
  +                    Thread.currentThread().sleep(_delay);
                   } catch(Exception e) {
  -                    ; // ignored
  +                    // ignored
                   }
                   try {
                       evict();
  
  
  

--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@jakarta.apache.org>


Mime
View raw message