code: public static ExecutorService create(final Function<Runnable, Thread> threadSupplier) {
          if (threadSupplier == null) {
              throw new IllegalArgumentException("Condition evaluation thread supplier cannot be null");
          }
          return create(new BiFunction<Runnable, String, Thread>() {
              @Override
              public Thread apply(Runnable runnable, String __) {
                  return threadSupplier.apply(runnable);
              }
          }, null);
      }
docs: Creates an executor service that creates thread's based on the <code>thread supplier</code>
  @param threadSupplier The thread supplier
  @return An executor service that will use the thread created by the <code>threadSupplier</code> when polling