code: private boolean doStart()
    {
      if (! _lifecycle.isActive()) {
        return false;
      }
      
      if (! isEnable()) {
        return false;
      }
      
      int startingCount = _startingCount.get();
  
      int threadCount = _threadCount.get() + startingCount;
  
      if (_threadMax < threadCount) {
        onThreadMax();
        
        return false;
      }
      else if (! isIdleTooLow(startingCount)) {
        return false;
      }
      
      _idleCount.incrementAndGet();
  
      startConnection();
        
      return true;
    }
docs: Checks if the launcher should start another thread.