awaitility/src/main/java/org/awaitility/core/InternalExecutorServiceFactory.java
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);
    }
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);
    }
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