code: public void shrink()
          throws InterruptedException
      {
          if (_running==0)
              return;
  
          synchronized(this)
          {
              // If we have a maxIdleTime, then only shrink once per period.
              if (_maxIdleTimeMs>0)
              {
                  long now=System.currentTimeMillis();
                  if ((now-_lastShrink)<_maxIdleTimeMs)
                      return; // don't shrink
                  _lastShrink=now;
              }
              
              // shrink if we are running and have available threads and we are above minimal size
              if (_running>0 && _available>0 && _size>_min)
                  stopPondLife(_index[--_available]);
          }
      }
docs: /* ------------------------------------------------------------