@SuppressWarnings("squid:S112")
  private void safeExecute(Runnable command) {
    try {
      executor.execute(command);
    } catch (RejectedExecutionException e) {
      if ((executor instanceof ExecutorService) && ((ExecutorService) executor).isShutdown()) {
        throw new RuntimeException("Server is shutting down", e);
      }
      throw e;
    }
  }
Adds a listener to be notified when the state instance changes according to {@code .equals()}.
Listener is always notified asynchronously using a dedicated notification thread pool so, care
should be taken to avoid leaking {@code this} when adding a listener in a constructor.
Additionally, it is possible notifications are observed out of order due to the asynchronous
execution. The listener is notified immediately of the current state.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/StateMachine.java