docs: public void stop() {
          if (shutdownExecutorOnStop) {
              executor.shutdown(); // Disable new tasks from being submitted
              try {
                  // Wait a while for existing tasks to terminate
                  if (!executor.awaitTermination(1, TimeUnit.SECONDS)) {
                      executor.shutdownNow(); // Cancel currently executing tasks
                      // Wait a while for tasks to respond to being cancelled
                      if (!executor.awaitTermination(1, TimeUnit.SECONDS)) {
                          System.err.println(getClass().getSimpleName() + ": ScheduledExecutorService did not terminate");
                      }
                  }
              } catch (InterruptedException ie) {
                  // (Re-)Cancel if current thread also interrupted
                  executor.shutdownNow();
                  // Preserve interrupt status
                  Thread.currentThread().interrupt();
              }
          } else {
              // The external manager(like JEE container) responsible for lifecycle of executor
              synchronized (this) {
                  if (this.scheduledFuture == null) {
                      // was never started
                      return;
                  }
                  if (this.scheduledFuture.isCancelled()) {
                      // already cancelled
                      return;
                  }
                  // just cancel the scheduledFuture and exit
                  this.scheduledFuture.cancel(false);
              }
          }
      }