private synchronized boolean thresholdCheck(float bestLoad, float worstLoad,
      float largestLoadPerConnection, boolean balanced) {
    if (rebalancing) {
      if (balanced) {
        rebalancing = false;
      }
      return balanced;
    }

    // see if we're out of balance enough to trigger rebalancing or whether we
    // should tolerate the imbalance
    if (!balanced) {
      float imbalance = worstLoad - bestLoad;
      if (imbalance >= (largestLoadPerConnection * loadImbalanceThreshold)) {
        rebalancing = true;
      } else {
        // we're not in balance but are within the threshold
        balanced = true;
      }
    }
    return balanced;
  }
In order to keep from ping-ponging clients around the cluster we don't move a client unless
imbalance is greater than the loadImbalanceThreshold.
<p>
When the threshold is reached we report imbalance until proper balance is achieved.
<p>
This method has the side-effect of setting the <code>rebalancing</code> instance variable
which, at the time of this writing, is only used by this method.
<p>
geode-core/src/main/java/org/apache/geode/distributed/internal/LocatorLoadSnapshot.java