@Override
  public DistributionLocator[] getDistributionLocators() {
    synchronized (locatorSet) {
      Collection coll = new ArrayList(locatorSet.size());
      LOCATORS: for (final Object o : locatorSet) {
        Future future = (Future) o;
        for (;;) {
          checkCancellation();
          boolean interrupted = Thread.interrupted();
          try {
            coll.add(future.get());
            break; // success
          } catch (InterruptedException ex) {
            interrupted = true;
            continue; // keep trying
          } catch (CancellationException ex) {
            continue LOCATORS;
          } catch (ExecutionException ex) {
            handle(ex);
            continue LOCATORS;
          } finally {
            if (interrupted) {
              Thread.currentThread().interrupt();
            }
          }
        } // for
      }

      DistributionLocator[] array = new DistributionLocator[coll.size()];
      coll.toArray(array);
      return array;
    }
  }
Adds a new, unstarted <code>DistributionLocator</code> to this distributed system.
geode-core/src/main/java/org/apache/geode/admin/internal/AdminDistributedSystemImpl.java