This utility
class defines static factory methods for creating
ExecutorService and
ScheduledExecutorService objects. Each of the
factory methods has a variant that allows you to explicitly specify a
ThreadFactory. newSingleThreadExecutor(
) returns an ExecutorService that uses a
single thread and an unbounded queue of waiting tasks.
newFixedThreadPool( ) returns an
ExecutorService that uses a thread pool with the
specified number of threads and an unbounded queue.
newCachedThreadPool( ) returns an
ExecutorService that does not queue tasks but
instead creates as many threads as are needed. When a task
terminates, its thread is cached for reuse. Cached threads are
allowed to terminate if they remain unused for 60 seconds.
newSingleThreadScheduledExecutor( ) returns a
ScheduledExecutorService that uses a single thread
for running tasks. newScheduledThreadPool( )
returns a ScheduledExecutorService that uses a
thread pool of the specified size.
The factory methods of this class typically return instances of
ThreadPoolExecutor and
ScheduledThreadPoolExecutor. If the returned
objects are cast to these implementing types, they can be configured
(to change the thread pool size, for example). If you want to prevent
this from happening, use the unconfigurableExecutorService(
) and unconfigurableScheduledExecutorService(
) methods to obtain wrapper objects that implement only the
ExecutorService and
ScheduledExecutorService methods and do not permit
configuration.
Other methods of this class include callable( ),
which returns a Callable object wrapped around a
Runnable and an optional result, and
defaultThreadFactory( ), which returns a basic
ThreadFactory object. Executors also define
methods related to access control and the Java security system. A
variant of the callable( ) method wraps a
Callable around a
java.security.PrivilegedAction.
privilegedCallable( ) is intended to be invoked
from within a PrivilegedAction being run with
AccessController.doPrivileged( ). When passed a
Callable in this way, it returns a new
Callable that can be used later to invoke the
original callable in a privileged access control context, granting it
permissions that it would not otherwise have.
public class Executors {
// No Constructor
// Public Class Methods
public static Callable<Object> callable(java.security.PrivilegedAction action);
public static Callable<Object> callable(Runnable task);
public static Callable<Object> callable(java.security.PrivilegedExceptionAction action);
public static <T> Callable<T> callable(Runnable task, T result);
public static ThreadFactory defaultThreadFactory( );
public static ExecutorService newCachedThreadPool( );
public static ExecutorService newCachedThreadPool(ThreadFactory threadFactory);
public static ExecutorService newFixedThreadPool(int nThreads);
public static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory);
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize);
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize,
ThreadFactory threadFactory);
public static ExecutorService newSingleThreadExecutor( );
public static ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory);
public static ScheduledExecutorService newSingleThreadScheduledExecutor( );
public static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory
threadFactory);
public static <T> Callable<T> privilegedCallable(Callable<T> callable);
public static <T> Callable<T> privilegedCallableUsingCurrentClassLoader
(Callable<T> callable);
public static ThreadFactory privilegedThreadFactory( );
public static ExecutorService unconfigurableExecutorService(ExecutorService executor);
public static ScheduledExecutorService unconfigurableScheduledExecutorService
(ScheduledExecutorService executor);
}