servicetalk-concurrent-api/src/main/java/io/servicetalk/concurrent/api/Executors.java
/**
     * Creates a new {@link Executor} using {@code executor} to execute immediate tasks and {@code scheduler} to
     * schedule delayed tasks.
     * Task execution will not honor cancellations unless passed {@link java.util.concurrent.Executor}
     * is an instance of {@link ExecutorService}.
     * <p><strong>Long running tasks</strong></p>
     * {@link java.util.concurrent.Executor} implementations are expected to run long running (blocking) tasks which may
     * depend on other tasks submitted to the same {@link java.util.concurrent.Executor} instance.
     * In order to avoid deadlocks, it is generally a good idea to not allow task queuing in the
     * {@link java.util.concurrent.Executor}.
     *
     * @param jdkExecutor {@link java.util.concurrent.Executor} to use for executing tasks.
     * The lifetime of this object is transferred to the return value. In other words {@link Executor#closeAsync()} will
     * call {@link ExecutorService#shutdown()} (if possible).
     * @param scheduledExecutorService {@link ScheduledExecutorService} to use for executing tasks.
     * The lifetime of this object is transferred to the return value. In other words {@link Executor#closeAsync()} will
     * call {@link ScheduledExecutorService#shutdown()}.
     * @param mayInterruptOnCancel If set to {@code true}, when a task is cancelled, thread running the task will be
     * interrupted.
     * @return A new {@link Executor}.
     */
Creates a new  Executor using  executor to execute immediate tasks and  scheduler to
schedule delayed tasks.
Task execution will not honor cancellations unless passed  java.util.concurrent.Executor
is an instance of  ExecutorService.
Long running tasks
java.util.concurrent.Executor implementations are expected to run long running (blocking) tasks which may
depend on other tasks submitted to the same  java.util.concurrent.Executor instance.
In order to avoid deadlocks, it is generally a good idea to not allow task queuing in the
java.util.concurrent.Executor.

@param jdkExecutor  java.util.concurrent.Executor to use for executing tasks.
The lifetime of this object is transferred to the return value. In other words  Executor#closeAsync() will
call  ExecutorService#shutdown() (if possible).
@param scheduledExecutorService  ScheduledExecutorService to use for executing tasks.
The lifetime of this object is transferred to the return value. In other words  Executor#closeAsync() will
call  ScheduledExecutorService#shutdown().
@param mayInterruptOnCancel If set to  true, when a task is cancelled, thread running the task will be
interrupted.
@return A new  Executor.
Creates a new Executor using executor to execute immediate tasks and scheduler to schedule delayed tasks . Task execution will not honor cancellations unless passed java . util . concurrent . Executor is an instance of ExecutorService . Long running tasks java . util . concurrent . Executor implementations are expected to run long running ( blocking ) tasks which may depend on other tasks submitted to the same java . util . concurrent . Executor instance . In order to avoid deadlocks it is generally a good idea to not allow task queuing in the java . util . concurrent . Executor . @param jdkExecutor java . util . concurrent . Executor to use for executing tasks . The lifetime of this object is transferred to the return value . In other words Executor#closeAsync () will call ExecutorService#shutdown () ( if possible ) . @param scheduledExecutorService ScheduledExecutorService to use for executing tasks . The lifetime of this object is transferred to the return value . In other words Executor#closeAsync () will call ScheduledExecutorService#shutdown () . @param mayInterruptOnCancel If set to true when a task is cancelled thread running the task will be interrupted . @return A new Executor .
public static Executor from(java.util.concurrent.Executor jdkExecutor,
                                ScheduledExecutorService scheduledExecutorService, boolean mayInterruptOnCancel) {
        return EXECUTOR_PLUGINS.wrapExecutor(
                new DefaultExecutor(jdkExecutor, scheduledExecutorService, mayInterruptOnCancel));
    }
public static Executor from ( java . util . concurrent . Executor jdkExecutor , ScheduledExecutorService scheduledExecutorService , boolean mayInterruptOnCancel ) { return EXECUTOR_PLUGINS . wrapExecutor ( new DefaultExecutor ( jdkExecutor , scheduledExecutorService , mayInterruptOnCancel ) ) ; }
Creates a new {@link Executor} using {@code executor} to execute immediate tasks and {@code scheduler} to
 schedule delayed tasks.
Creates a new { @link Executor } using { @code executor } to execute immediate tasks and { @code scheduler } to schedule delayed tasks .