code: @Override
      public void run() {
          while (true) {
              if (countObservers() == 0) {
                  try {
                      Thread.sleep(Long.MAX_VALUE);
                  } catch (InterruptedException e) {
                  }
              } else {
                  startWatching();
                  while (countObservers() > 0) {
                      getNewLines();
                      try {
                          Thread.sleep(getDelay());
                      } catch (InterruptedException e) {
                      }
                  }
              }
          }
      }
docs: Implemented from runnable