@GwtCompatible(emulated=true) public final class MoreExecutors extends Object
| Modifier and Type | Method and Description | 
|---|---|
| static void | addDelayedShutdownHook(ExecutorService service,
                      long terminationTimeout,
                      TimeUnit timeUnit)Add a shutdown hook to wait for thread completion in the given  service. | 
| static Executor | directExecutor()Returns an  Executorthat runs each task in the thread that invokesexecute, as inThreadPoolExecutor.CallerRunsPolicy. | 
| static ExecutorService | getExitingExecutorService(ThreadPoolExecutor executor)Converts the given ThreadPoolExecutor into an ExecutorService that exits when the application
 is complete. | 
| static ExecutorService | getExitingExecutorService(ThreadPoolExecutor executor,
                         long terminationTimeout,
                         TimeUnit timeUnit)Converts the given ThreadPoolExecutor into an ExecutorService that exits when the application
 is complete. | 
| static ScheduledExecutorService | getExitingScheduledExecutorService(ScheduledThreadPoolExecutor executor)Converts the given ScheduledThreadPoolExecutor into a ScheduledExecutorService that exits when
 the application is complete. | 
| static ScheduledExecutorService | getExitingScheduledExecutorService(ScheduledThreadPoolExecutor executor,
                                  long terminationTimeout,
                                  TimeUnit timeUnit)Converts the given ScheduledThreadPoolExecutor into a ScheduledExecutorService that exits when
 the application is complete. | 
| static ListeningExecutorService | listeningDecorator(ExecutorService delegate)Creates an  ExecutorServicewhosesubmitandinvokeAllmethods submitListenableFutureTaskinstances to the given delegate
 executor. | 
| static ListeningScheduledExecutorService | listeningDecorator(ScheduledExecutorService delegate)Creates a  ScheduledExecutorServicewhosesubmitandinvokeAllmethods
 submitListenableFutureTaskinstances to the given delegate executor. | 
| static ListeningExecutorService | newDirectExecutorService()Creates an executor service that runs each task in the thread that invokes
  execute/submit, as inThreadPoolExecutor.CallerRunsPolicyThis applies both to individually
 submitted tasks and to collections of tasks submitted viainvokeAllorinvokeAny. | 
| static ThreadFactory | platformThreadFactory()Returns a default thread factory used to create new threads. | 
| static boolean | shutdownAndAwaitTermination(ExecutorService service,
                           long timeout,
                           TimeUnit unit)Shuts down the given executor service gradually, first disabling new submissions and later, if
 necessary, cancelling remaining tasks. | 
@Beta @GwtIncompatible public static ExecutorService getExitingExecutorService(ThreadPoolExecutor executor, long terminationTimeout, TimeUnit timeUnit)
This is mainly for fixed thread pools. See Executors.newFixedThreadPool(int).
executor - the executor to modify to make sure it exits when the application is finishedterminationTimeout - how long to wait for the executor to finish before terminating the
     JVMtimeUnit - unit of time for the time parameter@Beta @GwtIncompatible public static ScheduledExecutorService getExitingScheduledExecutorService(ScheduledThreadPoolExecutor executor, long terminationTimeout, TimeUnit timeUnit)
This is mainly for fixed thread pools. See Executors.newScheduledThreadPool(int).
executor - the executor to modify to make sure it exits when the application is finishedterminationTimeout - how long to wait for the executor to finish before terminating the
     JVMtimeUnit - unit of time for the time parameter@Beta @GwtIncompatible public static void addDelayedShutdownHook(ExecutorService service, long terminationTimeout, TimeUnit timeUnit)
service.
 This is useful if the given service uses daemon threads, and we want to keep the JVM from
 exiting immediately on shutdown, instead giving these daemon threads a chance to terminate
 normally.service - ExecutorService which uses daemon threadsterminationTimeout - how long to wait for the executor to finish before terminating the
     JVMtimeUnit - unit of time for the time parameter@Beta @GwtIncompatible public static ExecutorService getExitingExecutorService(ThreadPoolExecutor executor)
This method waits 120 seconds before continuing with JVM termination, even if the executor has not finished its work.
This is mainly for fixed thread pools. See Executors.newFixedThreadPool(int).
executor - the executor to modify to make sure it exits when the application is finished@Beta @GwtIncompatible public static ScheduledExecutorService getExitingScheduledExecutorService(ScheduledThreadPoolExecutor executor)
This method waits 120 seconds before continuing with JVM termination, even if the executor has not finished its work.
This is mainly for fixed thread pools. See Executors.newScheduledThreadPool(int).
executor - the executor to modify to make sure it exits when the application is finished@GwtIncompatible public static ListeningExecutorService newDirectExecutorService()
execute/submit, as in ThreadPoolExecutor.CallerRunsPolicy This applies both to individually
 submitted tasks and to collections of tasks submitted via invokeAll or
 invokeAny. In the latter case, tasks will run serially on the calling thread. Tasks are
 run to completion before a Future is returned to the caller (unless the executor has
 been shutdown).
 Although all tasks are immediately executed in the thread that submitted the task, this
 ExecutorService imposes a small locking overhead on each task submission in order to
 implement shutdown and termination behavior.
 
The implementation deviates from the ExecutorService specification with regards to
 the shutdownNow method. First, "best-effort" with regards to canceling running tasks is
 implemented as "no-effort". No interrupts or other attempts are made to stop threads executing
 tasks. Second, the returned list will always be empty, as any submitted task is considered to
 have started execution. This applies also to tasks given to invokeAll or
 invokeAny which are pending serial execution, even the subset of the tasks that have
 not yet started execution. It is unclear from the ExecutorService specification if
 these should be included, and it's much easier to implement the interpretation that they not
 be. Finally, a call to shutdown or shutdownNow may result in concurrent calls
 to invokeAll/invokeAny throwing RejectedExecutionException, although a subset of the
 tasks may already have been executed.
public static Executor directExecutor()
Executor that runs each task in the thread that invokes
 execute, as in ThreadPoolExecutor.CallerRunsPolicy.
 This instance is equivalent to:
   
   final class DirectExecutor implements Executor {
     public void execute(Runnable r) {
       r.run();
     }
   }
 This should be preferred to newDirectExecutorService() because implementing the
 ExecutorService subinterface necessitates significant performance overhead.
@GwtIncompatible public static ListeningExecutorService listeningDecorator(ExecutorService delegate)
ExecutorService whose submit and invokeAll methods submit ListenableFutureTask instances to the given delegate
 executor. Those methods, as well as execute and invokeAny, are implemented in
 terms of calls to delegate.execute. All other methods are forwarded unchanged to the delegate. This implies that
 the returned ListeningExecutorService never calls the delegate's submit,
 invokeAll, and invokeAny methods, so any special handling of tasks must be implemented in the delegate's
 execute method or by wrapping the returned ListeningExecutorService.
 If the delegate executor was already an instance of ListeningExecutorService, it is returned untouched, and the rest of this documentation does
 not apply.
@GwtIncompatible public static ListeningScheduledExecutorService listeningDecorator(ScheduledExecutorService delegate)
ScheduledExecutorService whose submit and invokeAll methods
 submit ListenableFutureTask instances to the given delegate executor. Those methods, as
 well as execute and invokeAny, are implemented in terms of calls to delegate.execute. All other methods are forwarded unchanged to the delegate. This implies that
 the returned ListeningScheduledExecutorService never calls the delegate's submit, invokeAll, and invokeAny methods, so any special handling of tasks
 must be implemented in the delegate's execute method or by wrapping the returned ListeningScheduledExecutorService.
 If the delegate executor was already an instance of ListeningScheduledExecutorService, it is returned untouched, and the rest of this
 documentation does not apply.
@Beta @GwtIncompatible public static ThreadFactory platformThreadFactory()
On AppEngine, returns ThreadManager.currentRequestThreadFactory(). Otherwise,
 returns Executors.defaultThreadFactory().
@Beta @GwtIncompatible public static boolean shutdownAndAwaitTermination(ExecutorService service, long timeout, TimeUnit unit)
The method takes the following steps:
ExecutorService.shutdown(), disabling acceptance of new submitted tasks.
 ExecutorService.shutdownNow(), cancelling pending
 tasks and interrupting running tasks.
 If, at any step of the process, the calling thread is interrupted, the method calls
 ExecutorService.shutdownNow() and returns.
service - the ExecutorService to shut downtimeout - the maximum time to wait for the ExecutorService to terminateunit - the time unit of the timeout argumenttrue if the ExecutorService was terminated successfully, false
     if the call timed out or was interruptedCopyright © 2010–2017. All rights reserved.