Executors
  public
  
  
  
  class
  Executors
  
    extends Object
  
  
  
  
  
  
  
    
  Factory and utility methods for Executor, ExecutorService, ScheduledExecutorService, ThreadFactory, and Callable classes defined in this
 package. This class supports the following kinds of methods:
 
   - Methods that create and return an ExecutorServiceset up with commonly useful configuration settings.
- Methods that create and return a ScheduledExecutorServiceset up with commonly useful configuration settings.
- Methods that create and return a "wrapped" ExecutorService, that
       disables reconfiguration by making implementation-specific methods
       inaccessible.
   
- Methods that create and return a ThreadFactorythat sets newly created threads to a known state.
- Methods that create and return a Callableout of other closure-like forms, so they can be used
       in execution methods requiringCallable.
Summary
| Public methods | 
|---|
  
  
  
    | 
        
        
        static
        
        
        Callable<Object> | 
      callable(Runnable task)
      Returns a Callableobject that, when
 called, runs the given task and returnsnull. | 
  
  
  
  
    | 
        
        
        static
        
        
        Callable<Object> | 
      callable(PrivilegedAction<?> action)
      Returns a Callableobject that, when
 called, runs the given privileged action and returns its result. | 
  
  
  
  
    | 
        
        
        static
        
        
        Callable<Object> | 
      callable(PrivilegedExceptionAction<?> action)
      Returns a Callableobject that, when
 called, runs the given privileged exception action and returns
 its result. | 
  
  
  
  
    | 
        
        
        static
        
        <T>
        Callable<T> | 
      callable(Runnable task, T result)
      Returns a Callableobject that, when
 called, runs the given task and returns the given result. | 
  
  
  
  
    | 
        
        
        static
        
        
        ThreadFactory | 
      defaultThreadFactory()
      Returns a default thread factory used to create new threads.
        
    
 | 
  
  
  
  
    | 
        
        
        static
        
        
        ExecutorService | 
      newCachedThreadPool()
      Creates a thread pool that creates new threads as needed, but
 will reuse previously constructed threads when they are
 available.
        
    
 | 
  
  
  
  
    | 
        
        
        static
        
        
        ExecutorService | 
      newCachedThreadPool(ThreadFactory threadFactory)
      Creates a thread pool that creates new threads as needed, but
 will reuse previously constructed threads when they are
 available, and uses the provided
 ThreadFactory to create new threads when needed.
        
    
 | 
  
  
  
  
    | 
        
        
        static
        
        
        ExecutorService | 
      newFixedThreadPool(int nThreads, ThreadFactory threadFactory)
      Creates a thread pool that reuses a fixed number of threads
 operating off a shared unbounded queue, using the provided
 ThreadFactory to create new threads when needed.
        
    
 | 
  
  
  
  
    | 
        
        
        static
        
        
        ExecutorService | 
      newFixedThreadPool(int nThreads)
      Creates a thread pool that reuses a fixed number of threads
 operating off a shared unbounded queue.
        
    
 | 
  
  
  
  
    | 
        
        
        static
        
        
        ScheduledExecutorService | 
      newScheduledThreadPool(int corePoolSize)
      Creates a thread pool that can schedule commands to run after a
 given delay, or to execute periodically.
        
    
 | 
  
  
  
  
    | 
        
        
        static
        
        
        ScheduledExecutorService | 
      newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory)
      Creates a thread pool that can schedule commands to run after a
 given delay, or to execute periodically.
        
    
 | 
  
  
  
  
    | 
        
        
        static
        
        
        ExecutorService | 
      newSingleThreadExecutor(ThreadFactory threadFactory)
      Creates an Executor that uses a single worker thread operating
 off an unbounded queue, and uses the provided ThreadFactory to
 create a new thread when needed.
        
    
 | 
  
  
  
  
    | 
        
        
        static
        
        
        ExecutorService | 
      newSingleThreadExecutor()
      Creates an Executor that uses a single worker thread operating
 off an unbounded queue.
        
    
 | 
  
  
  
  
    | 
        
        
        static
        
        
        ScheduledExecutorService | 
      newSingleThreadScheduledExecutor()
      Creates a single-threaded executor that can schedule commands
 to run after a given delay, or to execute periodically.
        
    
 | 
  
  
  
  
    | 
        
        
        static
        
        
        ScheduledExecutorService | 
      newSingleThreadScheduledExecutor(ThreadFactory threadFactory)
      Creates a single-threaded executor that can schedule commands
 to run after a given delay, or to execute periodically.
        
    
 | 
  
  
  
  
    | 
        
        
        static
        
        
        ExecutorService | 
      newWorkStealingPool(int parallelism)
      Creates a thread pool that maintains enough threads to support
 the given parallelism level, and may use multiple queues to
 reduce contention.
        
    
 | 
  
  
  
  
    | 
        
        
        static
        
        
        ExecutorService | 
      newWorkStealingPool()
      Creates a work-stealing thread pool using the number of
 available processors
 as its target parallelism level.
        
    
 | 
  
  
  
  
    | 
        
        
        static
        
        <T>
        Callable<T> | 
      privilegedCallable(Callable<T> callable)
      
      This method was deprecated
      in API level 34.
    This method is only useful in conjunction with
       the Security Manager, which is
       deprecated and subject to removal in a future release.
       Consequently, this method is also deprecated and subject to
       removal. There is no replacement for the Security Manager or this
       method.
        
    
 | 
  
  
  
  
    | 
        
        
        static
        
        <T>
        Callable<T> | 
      privilegedCallableUsingCurrentClassLoader(Callable<T> callable)
      
      This method was deprecated
      in API level 34.
    This method is only useful in conjunction with
       the Security Manager, which is
       deprecated and subject to removal in a future release.
       Consequently, this method is also deprecated and subject to
       removal. There is no replacement for the Security Manager or this
       method.
        
    
 | 
  
  
  
  
    | 
        
        
        static
        
        
        ThreadFactory | 
      privilegedThreadFactory()
      
      This method was deprecated
      in API level 34.
    This method is only useful in conjunction with
       the Security Manager, which is
       deprecated and subject to removal in a future release.
       Consequently, this method is also deprecated and subject to
       removal. There is no replacement for the Security Manager or this
       method.
        
    
 | 
  
  
  
  
    | 
        
        
        static
        
        
        ExecutorService | 
      unconfigurableExecutorService(ExecutorService executor)
      Returns an object that delegates all defined ExecutorServicemethods to the given executor, but not any
 other methods that might otherwise be accessible using
 casts. | 
  
  
  
  
    | 
        
        
        static
        
        
        ScheduledExecutorService | 
      unconfigurableScheduledExecutorService(ScheduledExecutorService executor)
      Returns an object that delegates all defined ScheduledExecutorServicemethods to the given executor, but
 not any other methods that might otherwise be accessible using
 casts. | 
  
| Inherited methods | 
|---|
| 
    From class
      
        
          java.lang.Object
        
      
      
  
  
  
    | 
        
        
        
        
        
        Object | 
      clone()
      Creates and returns a copy of this object.
        
    
 |  
  
  
    | 
        
        
        
        
        
        boolean | 
      equals(Object obj)
      Indicates whether some other object is "equal to" this one.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      finalize()
      Called by the garbage collector on an object when garbage collection
 determines that there are no more references to the object.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        Class<?> | 
      getClass()
      Returns the runtime class of this Object. |  
  
  
    | 
        
        
        
        
        
        int | 
      hashCode()
      Returns a hash code value for the object.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        void | 
      notify()
      Wakes up a single thread that is waiting on this object's
 monitor.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        void | 
      notifyAll()
      Wakes up all threads that are waiting on this object's monitor.
        
    
 |  
  
  
    | 
        
        
        
        
        
        String | 
      toString()
      Returns a string representation of the object.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        void | 
      wait(long timeoutMillis, int nanos)
      Causes the current thread to wait until it is awakened, typically
 by being notified or interrupted, or until a
 certain amount of real time has elapsed.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        void | 
      wait(long timeoutMillis)
      Causes the current thread to wait until it is awakened, typically
 by being notified or interrupted, or until a
 certain amount of real time has elapsed.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        void | 
      wait()
      Causes the current thread to wait until it is awakened, typically
 by being notified or interrupted.
        
    
 |  | 
Public methods
    callable
    
public static Callable<Object> callable (Runnable task)
    
    
    
  Returns a Callable object that, when
 called, runs the given task and returns null.
    
    | Parameters | 
|---|
      
        | task | Runnable: the task to run | 
    
    
      
  
 
    callable
    
public static Callable<Object> callable (PrivilegedAction<?> action)
    
    
    
  Returns a Callable object that, when
 called, runs the given privileged action and returns its result.
    
    | Parameters | 
|---|
      
        | action | PrivilegedAction: the privileged action to run | 
    
    
      
  
 
    callable
    
public static Callable<Object> callable (PrivilegedExceptionAction<?> action)
    
    
    
  Returns a Callable object that, when
 called, runs the given privileged exception action and returns
 its result.
    
    | Parameters | 
|---|
      
        | action | PrivilegedExceptionAction: the privileged exception action to run | 
    
    
      
  
 
    callable
    
public static Callable<T> callable (Runnable task, 
                T result)
    
    
    
  Returns a Callable object that, when
 called, runs the given task and returns the given result.  This
 can be useful when applying methods requiring a
 Callable to an otherwise resultless action.
    
    | Parameters | 
|---|
      
        | task | Runnable: the task to run | 
      
        | result | T: the result to return | 
    
    
      
  
 
    defaultThreadFactory
    
public static ThreadFactory defaultThreadFactory ()
    
    
    
  Returns a default thread factory used to create new threads.
 This factory creates all new threads used by an Executor in the
 same ThreadGroup. Each new
 thread is created as a non-daemon thread with priority set to
 the smaller of Thread.NORM_PRIORITY and the maximum
 priority permitted in the thread group.  New threads have names
 accessible via Thread.getName of
 pool-N-thread-M, where N is the sequence
 number of this factory, and M is the sequence number
 of the thread created by this factory.
    
 
    newCachedThreadPool
    
public static ExecutorService newCachedThreadPool ()
    
    
    
  Creates a thread pool that creates new threads as needed, but
 will reuse previously constructed threads when they are
 available.  These pools will typically improve the performance
 of programs that execute many short-lived asynchronous tasks.
 Calls to execute will reuse previously constructed
 threads if available. If no existing thread is available, a new
 thread will be created and added to the pool. Threads that have
 not been used for sixty seconds are terminated and removed from
 the cache. Thus, a pool that remains idle for long enough will
 not consume any resources. Note that pools with similar
 properties but different details (for example, timeout parameters)
 may be created using ThreadPoolExecutor constructors.
    
 
    newCachedThreadPool
    
public static ExecutorService newCachedThreadPool (ThreadFactory threadFactory)
    
    
    
  Creates a thread pool that creates new threads as needed, but
 will reuse previously constructed threads when they are
 available, and uses the provided
 ThreadFactory to create new threads when needed.
    
    | Parameters | 
|---|
      
        | threadFactory | ThreadFactory: the factory to use when creating new threads | 
    
    
      
  
 
    newFixedThreadPool
    
public static ExecutorService newFixedThreadPool (int nThreads, 
                ThreadFactory threadFactory)
    
    
    
  Creates a thread pool that reuses a fixed number of threads
 operating off a shared unbounded queue, using the provided
 ThreadFactory to create new threads when needed.  At any point,
 at most nThreads threads will be active processing
 tasks.  If additional tasks are submitted when all threads are
 active, they will wait in the queue until a thread is
 available.  If any thread terminates due to a failure during
 execution prior to shutdown, a new one will take its place if
 needed to execute subsequent tasks.  The threads in the pool will
 exist until it is explicitly shutdown.
    
    | Parameters | 
|---|
      
        | nThreads | int: the number of threads in the pool | 
      
        | threadFactory | ThreadFactory: the factory to use when creating new threads | 
    
    
      
  
 
    newFixedThreadPool
    
public static ExecutorService newFixedThreadPool (int nThreads)
    
    
    
  Creates a thread pool that reuses a fixed number of threads
 operating off a shared unbounded queue.  At any point, at most
 nThreads threads will be active processing tasks.
 If additional tasks are submitted when all threads are active,
 they will wait in the queue until a thread is available.
 If any thread terminates due to a failure during execution
 prior to shutdown, a new one will take its place if needed to
 execute subsequent tasks.  The threads in the pool will exist
 until it is explicitly shutdown.
    
    | Parameters | 
|---|
      
        | nThreads | int: the number of threads in the pool | 
    
    
      
  
 
    newScheduledThreadPool
    
public static ScheduledExecutorService newScheduledThreadPool (int corePoolSize)
    
    
    
  Creates a thread pool that can schedule commands to run after a
 given delay, or to execute periodically.
    
    | Parameters | 
|---|
      
        | corePoolSize | int: the number of threads to keep in the pool,
 even if they are idle | 
    
    
      
  
 
    newScheduledThreadPool
    
public static ScheduledExecutorService newScheduledThreadPool (int corePoolSize, 
                ThreadFactory threadFactory)
    
    
    
  Creates a thread pool that can schedule commands to run after a
 given delay, or to execute periodically.
    
    | Parameters | 
|---|
      
        | corePoolSize | int: the number of threads to keep in the pool,
 even if they are idle | 
      
        | threadFactory | ThreadFactory: the factory to use when the executor
 creates a new thread | 
    
    
      
  
 
    newSingleThreadExecutor
    
public static ExecutorService newSingleThreadExecutor (ThreadFactory threadFactory)
    
    
    
  Creates an Executor that uses a single worker thread operating
 off an unbounded queue, and uses the provided ThreadFactory to
 create a new thread when needed. Unlike the otherwise
 equivalent newFixedThreadPool(1, threadFactory) the
 returned executor is guaranteed not to be reconfigurable to use
 additional threads.
    
    | Parameters | 
|---|
      
        | threadFactory | ThreadFactory: the factory to use when creating new threads | 
    
    
      
  
 
    newSingleThreadExecutor
    
public static ExecutorService newSingleThreadExecutor ()
    
    
    
  Creates an Executor that uses a single worker thread operating
 off an unbounded queue. (Note however that if this single
 thread terminates due to a failure during execution prior to
 shutdown, a new one will take its place if needed to execute
 subsequent tasks.)  Tasks are guaranteed to execute
 sequentially, and no more than one task will be active at any
 given time. Unlike the otherwise equivalent
 newFixedThreadPool(1) the returned executor is
 guaranteed not to be reconfigurable to use additional threads.
    
 
    newSingleThreadScheduledExecutor
    
public static ScheduledExecutorService newSingleThreadScheduledExecutor ()
    
    
    
  Creates a single-threaded executor that can schedule commands
 to run after a given delay, or to execute periodically.
 (Note however that if this single
 thread terminates due to a failure during execution prior to
 shutdown, a new one will take its place if needed to execute
 subsequent tasks.)  Tasks are guaranteed to execute
 sequentially, and no more than one task will be active at any
 given time. Unlike the otherwise equivalent
 newScheduledThreadPool(1) the returned executor is
 guaranteed not to be reconfigurable to use additional threads.
    
 
    newSingleThreadScheduledExecutor
    
public static ScheduledExecutorService newSingleThreadScheduledExecutor (ThreadFactory threadFactory)
    
    
    
  Creates a single-threaded executor that can schedule commands
 to run after a given delay, or to execute periodically.  (Note
 however that if this single thread terminates due to a failure
 during execution prior to shutdown, a new one will take its
 place if needed to execute subsequent tasks.)  Tasks are
 guaranteed to execute sequentially, and no more than one task
 will be active at any given time. Unlike the otherwise
 equivalent newScheduledThreadPool(1, threadFactory)
 the returned executor is guaranteed not to be reconfigurable to
 use additional threads.
    
    | Parameters | 
|---|
      
        | threadFactory | ThreadFactory: the factory to use when creating new threads | 
    
    
      
  
 
    newWorkStealingPool
    
public static ExecutorService newWorkStealingPool (int parallelism)
    
    
    
  Creates a thread pool that maintains enough threads to support
 the given parallelism level, and may use multiple queues to
 reduce contention. The parallelism level corresponds to the
 maximum number of threads actively engaged in, or available to
 engage in, task processing. The actual number of threads may
 grow and shrink dynamically. A work-stealing pool makes no
 guarantees about the order in which submitted tasks are
 executed.
    
    
    | Parameters | 
|---|
      
        | parallelism | int: the targeted parallelism level | 
    
    
      
  
 
    newWorkStealingPool
    
public static ExecutorService newWorkStealingPool ()
    
    
    
  Creates a work-stealing thread pool using the number of
 available processors
 as its target parallelism level.
    
    
  
 
    privilegedCallable
    
public static Callable<T> privilegedCallable (Callable<T> callable)
    
    
    
  
      This method was deprecated
      in API level 34.
    This method is only useful in conjunction with
       the Security Manager, which is
       deprecated and subject to removal in a future release.
       Consequently, this method is also deprecated and subject to
       removal. There is no replacement for the Security Manager or this
       method.
  
  Legacy security code; do not use.
    
    | Parameters | 
|---|
      
        | callable | Callable | 
    
    
 
    privilegedCallableUsingCurrentClassLoader
    
public static Callable<T> privilegedCallableUsingCurrentClassLoader (Callable<T> callable)
    
    
    
  
      This method was deprecated
      in API level 34.
    This method is only useful in conjunction with
       the Security Manager, which is
       deprecated and subject to removal in a future release.
       Consequently, this method is also deprecated and subject to
       removal. There is no replacement for the Security Manager or this
       method.
  
  Legacy security code; do not use.
    
    | Parameters | 
|---|
      
        | callable | Callable | 
    
    
 
    privilegedThreadFactory
    
public static ThreadFactory privilegedThreadFactory ()
    
    
    
  
      This method was deprecated
      in API level 34.
    This method is only useful in conjunction with
       the Security Manager, which is
       deprecated and subject to removal in a future release.
       Consequently, this method is also deprecated and subject to
       removal. There is no replacement for the Security Manager or this
       method.
  
  Legacy security code; do not use.
    
 
    unconfigurableExecutorService
    
public static ExecutorService unconfigurableExecutorService (ExecutorService executor)
    
    
    
  Returns an object that delegates all defined ExecutorService methods to the given executor, but not any
 other methods that might otherwise be accessible using
 casts. This provides a way to safely "freeze" configuration and
 disallow tuning of a given concrete implementation.
    
    | Parameters | 
|---|
      
        | executor | ExecutorService: the underlying implementation | 
    
    
      
  
 
    unconfigurableScheduledExecutorService
    
public static ScheduledExecutorService unconfigurableScheduledExecutorService (ScheduledExecutorService executor)
    
    
    
  Returns an object that delegates all defined ScheduledExecutorService methods to the given executor, but
 not any other methods that might otherwise be accessible using
 casts. This provides a way to safely "freeze" configuration and
 disallow tuning of a given concrete implementation.
    
    | Parameters | 
|---|
      
        | executor | ScheduledExecutorService: the underlying implementation |