public boolean isIdleExpire(){
  if (!_lifecycle.isActive())   return true;
  long now=currentTimeActual();
  long idleExpire=_threadIdleExpireTime.get();
  int idleCount=_idleCount.get();
  if (_idleMin < idleCount) {
    long nextIdleExpire=now + _idleTimeout;
    if (_idleMax < idleCount && _idleMin < _idleMax) {
      _threadIdleExpireTime.compareAndSet(idleExpire,nextIdleExpire);
      return true;
    }
 else     if (idleExpire < now && _threadIdleExpireTime.compareAndSet(idleExpire,nextIdleExpire)) {
      return true;
    }
  }
  return false;
}

public boolean isIdleExpire ( ) { if ( ! _lifecycle . isActive ( ) ) return true ; long now = currentTimeActual ( ) ; long idleExpire = _threadIdleExpireTime . get ( ) ; int idleCount = _idleCount . get ( ) ; if ( _idleMin < idleCount ) { long nextIdleExpire = now + _idleTimeout ; if ( _idleMax < idleCount && _idleMin < _idleMax ) { _threadIdleExpireTime . compareAndSet ( idleExpire , nextIdleExpire ) ; return true ; } else if ( idleExpire < now && _threadIdleExpireTime . compareAndSet ( idleExpire , nextIdleExpire ) ) { return true ; } } return false ; }
returns true if the thread should expire instead of going to the idle state .
