code: protected void deliverLifecycleAnnouncement(final Logger logger, final boolean starting) {
          new Thread(new Runnable() {
              @Override
              public void run() {
                  for (final LifecycleListener listener : getLifecycleListeners()) {
                      try {
                          if (starting) {
                              listener.started(LifecycleParticipant.this);
                          } else {
                              listener.stopped(LifecycleParticipant.this);
                          }
                      } catch (Throwable t) {
                          logger.warn("Problem delivering lifecycle announcement to listener", t);
                      }
                  }
              }
          }, "Lifecycle announcement delivery").start();
      }
docs: Send a lifecycle announcement to all registered listeners.
  
  @param logger the logger to use, so the log entry shows as belonging to the proper subclass.
  @param starting will be {@code true} if the DeviceFinder is starting, {@code false} if it is stopping.