awaitility/src/main/java/org/awaitility/core/InternalExecutorServiceFactory.java
public static ExecutorService create(final BiFunction<Runnable, String, Thread> threadSupplier, final String alias) {
        if (threadSupplier == null) {
            throw new IllegalArgumentException("Condition evaluation thread supplier cannot be null");
        }
        return Executors.newSingleThreadExecutor(new ThreadFactory() {
            public Thread newThread(Runnable r) {
                final String threadName = generateDefaultThreadName(alias);
                return threadSupplier.apply(r, threadName);
            }
        });
    }
public static ExecutorService create(final BiFunction<Runnable, String, Thread> threadSupplier, final String alias) {
        if (threadSupplier == null) {
            throw new IllegalArgumentException("Condition evaluation thread supplier cannot be null");
        }
        return Executors.newSingleThreadExecutor(new ThreadFactory() {
            public Thread newThread(Runnable r) {
                final String threadName = generateDefaultThreadName(alias);
                return threadSupplier.apply(r, threadName);
            }
        });
    }
Creates an executor services that creates thread's based on the <code>thread supplier</code>.
The first argument to the <code>threadSupplier</code> is the Runnable (the condition that will be evaluated).
The second argument is the default thread name generated by Awaitility.
@param threadSupplier The thread supplier
@return An executor service that will use the thread created by the <code>threadSupplier</code> when polling