code: public void join() {
      try {
        if (server != null) server.join();
        if (triggerThread != null) triggerThread.join();
        if (urfThread != null) urfThread.join();
        if (blockFixerThread != null) blockFixerThread.join();
        if (blockCopierThread != null) blockCopierThread.join();
        if (corruptFileCounterThread != null) corruptFileCounterThread.join();
        if (purgeThread != null) purgeThread.join();
        if (statsCollectorThread != null) statsCollectorThread.join();
      } catch (InterruptedException ie) {
        // do nothing
      }
    }
docs: Wait for service to finish.
  (Normally, it runs forever.)