public class Executors extends Object
Executor
,
ExecutorService
,
ScheduledExecutorService
,
ThreadFactory
厂和实用方法,并
Callable
类定义在这个包。这类支持以下几种方法:
ExecutorService
设置常用的配置设置。ScheduledExecutorService
设置常用的配置设置。ThreadFactory
设置到一个已知的状态。Callable
出其他封闭状的形式,可用于执行方法需要Callable
。Modifier and Type | Method and Description |
---|---|
static Callable<Object> |
callable(PrivilegedAction<?> action)
返回一个
Callable 对象,在调用时,执行指定的特权操作并返回结果。
|
static Callable<Object> |
callable(PrivilegedExceptionAction<?> action)
返回一个
Callable 对象,在调用时,运行优先例外操作并返回结果。
|
static Callable<Object> |
callable(Runnable task)
返回一个
Callable 对象,在调用时,执行指定的任务并返回
null 。
|
static <T> Callable<T> |
callable(Runnable task, T result)
返回一个
Callable 对象,在调用时,执行指定的任务并返回结果。
|
static ThreadFactory |
defaultThreadFactory()
返回用于创建新线程的默认线程工厂。
|
static ExecutorService |
newCachedThreadPool()
创建一个线程池,根据需要创建新的线程,但在可用时将重用先前构建的线程。
|
static ExecutorService |
newCachedThreadPool(ThreadFactory threadFactory)
创建一个线程池线程创建新的需要,但会重用以前构建的线程可用时,使用所提供的threadfactory创建新线程时,需要。
|
static ExecutorService |
newFixedThreadPool(int nThreads)
创建一个线程池,使用固定数量的线程操作了共享无界队列。
|
static ExecutorService |
newFixedThreadPool(int nThreads, ThreadFactory threadFactory)
创建一个线程池,使用固定数量的线程操作了共享无界队列,使用提供的threadfactory创建新线程时,需要。
|
static ScheduledExecutorService |
newScheduledThreadPool(int corePoolSize)
创建一个线程池,可以调度命令在一个给定的延迟后运行,或周期性地执行。
|
static ScheduledExecutorService |
newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory)
创建一个线程池,可以调度命令在一个给定的延迟后运行,或周期性地执行。
|
static ExecutorService |
newSingleThreadExecutor()
创建一个执行器,使用一个单一的工作线程操作关闭一个无限的队列。
|
static ExecutorService |
newSingleThreadExecutor(ThreadFactory threadFactory)
创建一个执行器,采用单线程操作了无界队列,并使用所提供的threadfactory创建新线程需要时。
|
static ScheduledExecutorService |
newSingleThreadScheduledExecutor()
创建一个单线程的执行器,可以调度命令在一个给定的延迟后运行,或周期性地执行。
|
static ScheduledExecutorService |
newSingleThreadScheduledExecutor(ThreadFactory threadFactory)
创建一个单线程的执行器,可以调度命令在一个给定的延迟后运行,或周期性地执行。
|
static ExecutorService |
newWorkStealingPool()
创建一个工作线程池使用偷
available processors 为目标的并行度。
|
static ExecutorService |
newWorkStealingPool(int parallelism)
创建一个线程池,保持足够的线程来支持给定的并行级别,并可以使用多个队列来减少争用。
|
static <T> Callable<T> |
privilegedCallable(Callable<T> callable)
返回一个对象,
Callable ,时称,当前上下文的访问控制下执行给定的
callable 。
|
static <T> Callable<T> |
privilegedCallableUsingCurrentClassLoader(Callable<T> callable)
返回一个对象,
Callable ,时称,当前上下文的访问控制下执行给定的
callable ,与当前上下文类加载器的上下文类加载器。
|
static ThreadFactory |
privilegedThreadFactory()
返回一个用于创建与当前线程具有相同权限的新线程的线程工厂。
|
static ExecutorService |
unconfigurableExecutorService(ExecutorService executor)
返回一个对象,代表所有定义的
ExecutorService 方法指定遗嘱执行人,但没有任何其他的方法,否则可能会使用投。
|
static ScheduledExecutorService |
unconfigurableScheduledExecutorService(ScheduledExecutorService executor)
返回一个对象,代表所有定义的
ScheduledExecutorService 方法指定遗嘱执行人,但没有任何其他的方法,否则可能会使用投。
|
public static ExecutorService newFixedThreadPool(int nThreads)
nThreads
线程将积极处理任务。如果所有线程处于活动时都提交了额外的任务,他们将在队列中等待,直到有一个线程可用。如果任何线程终止由于在执行过程中的失败,在关机之前,一个新的将采取它的地方,如果需要执行后续任务。池中的线程将直到明确
shutdown
存在。
nThreads
-池中的线程数
nThreads <= 0
IllegalArgumentException
public static ExecutorService newWorkStealingPool(int parallelism)
parallelism
-目标并行度
parallelism <= 0
IllegalArgumentException
public static ExecutorService newWorkStealingPool()
available processors
为目标的并行度。
newWorkStealingPool(int)
public static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory)
nThreads
线程将积极处理任务。如果所有线程处于活动时都提交了额外的任务,他们将在队列中等待,直到有一个线程可用。如果任何线程终止由于在执行过程中的失败,在关机之前,一个新的将采取它的地方,如果需要执行后续任务。池中的线程将直到明确
shutdown
存在。
nThreads
-池中的线程数
threadFactory
-工厂用创建新线程时,
NullPointerException
-如果threadfactory是空的
nThreads <= 0
IllegalArgumentException
public static ExecutorService newSingleThreadExecutor()
newFixedThreadPool(1)
返回的执行是保证不可使用额外的线程。
public static ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory)
newFixedThreadPool(1, threadFactory)
返回的执行是保证不可使用额外的线程。
threadFactory
-工厂用创建新线程时,
NullPointerException
-如果threadfactory是空的
public static ExecutorService newCachedThreadPool()
execute
会重用以前构建的线程是否可用。如果没有现有的线程,将创建一个新的线程,并添加到池中。未使用过六十秒的线程被终止并从缓存中移除。因此,一个闲置的池,足够长的时间不会消耗任何资源。性质相似但不同的细节注意池(例如,超时参数)可以使用
ThreadPoolExecutor
构造函数创建。
public static ExecutorService newCachedThreadPool(ThreadFactory threadFactory)
threadFactory
-工厂用创建新线程时,
NullPointerException
-如果threadfactory是空的
public static ScheduledExecutorService newSingleThreadScheduledExecutor()
newScheduledThreadPool(1)
返回的执行是保证不可使用额外的线程。
public static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory)
newScheduledThreadPool(1, threadFactory)
返回的执行是保证不可使用额外的线程。
threadFactory
-工厂用创建新线程时,
NullPointerException
-如果threadfactory是空的
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
corePoolSize
-线程的数量保持在游泳池里,即使他们是空闲的
corePoolSize < 0
IllegalArgumentException
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory)
corePoolSize
-线程的数量保持在游泳池里,即使他们是空闲的
threadFactory
-工厂用当执行创建新线程
corePoolSize < 0
IllegalArgumentException
NullPointerException
-如果threadfactory是空的
public static ExecutorService unconfigurableExecutorService(ExecutorService executor)
ExecutorService
方法指定遗嘱执行人,但没有任何其他的方法,否则可能会使用投。这提供了一种方法来安全地“冻结”配置,不允许一个给定的具体实施调整。
executor
-底层的实现
ExecutorService
实例
NullPointerException
如果执行空
public static ScheduledExecutorService unconfigurableScheduledExecutorService(ScheduledExecutorService executor)
ScheduledExecutorService
方法指定遗嘱执行人,但没有任何其他的方法,否则可能会使用投。这提供了一种方法来安全地“冻结”配置,不允许一个给定的具体实施调整。
executor
-底层的实现
ScheduledExecutorService
实例
NullPointerException
如果执行空
public static ThreadFactory defaultThreadFactory()
ThreadGroup
执行器使用的所有新的线程,如果有
SecurityManager
,它采用
System.getSecurityManager()
组,其他的线程调用此方法
defaultThreadFactory
组。每一个新的线程被创建为一个优先级设置为
Thread.NORM_PRIORITY
更小的最高优先级的线程组允许非守护线程。新的线程可以通过
Thread.getName()
名字的pool-n-thread-m,其中n是该厂的序列号,和M是该厂的线程创建的序列号。
public static ThreadFactory privilegedThreadFactory()
defaultThreadFactory()
相同的设置,另外设置accesscontrolcontext和新线程contextclassloader作为线程调用这个
privilegedThreadFactory
方法相同。一个新的
privilegedThreadFactory
可以在
AccessController.doPrivileged
动作设置当前线程的上下文的访问控制创造与选择的权限设置保持在行动线程创建。
注意,当任务运行在线程将具有相同的访问控制和类装载器设置为当前线程,他们不需要有相同的ThreadLocal
或InheritableThreadLocal
值。如果有必要,对本地线程特定值可以设置或重置之前的任何任务运行在ThreadPoolExecutor
子类使用ThreadPoolExecutor.beforeExecute(Thread, Runnable)
。另外,如果需要初始化线程具有相同的inheritablethreadlocal设置其他一些指定的线程,你可以创建一个自定义的threadfactory该线程等待服务请求创建人将继承其值。
AccessControlException
-如果当前上下文的访问控制没有权限设置和获得上下文类加载器
public static <T> Callable<T> callable(Runnable task, T result)
Callable
对象,在调用时,执行指定的任务并返回结果。这可能是有用的当应用需要
Callable
另一个结果的行动。
T
-结果的类型
task
-任务运行
result
-结果返回
NullPointerException
空
public static Callable<Object> callable(Runnable task)
Callable
对象,在调用时,执行指定的任务并返回
null
。
task
-任务运行
NullPointerException
空
public static Callable<Object> callable(PrivilegedAction<?> action)
Callable
对象,在调用时,执行指定的特权操作并返回结果。
action
-运行特权行动
NullPointerException
如果行动无效
public static Callable<Object> callable(PrivilegedExceptionAction<?> action)
Callable
对象,在调用时,运行优先例外操作并返回结果。
action
-特权例外操作运行
NullPointerException
如果行动无效
public static <T> Callable<T> privilegedCallable(Callable<T> callable)
Callable
,时称,当前上下文的访问控制下执行给定的
callable
。通常这种方法应该被调用在一个
AccessController.doPrivileged
行动创造可以调用的说明会,如果可能的话,选择权限设置保持在作用下执行;或如果不可能,把相关的
AccessControlException
。
T
-可调用的结果的类型
callable
-基本任务
NullPointerException
如果调用null
public static <T> Callable<T> privilegedCallableUsingCurrentClassLoader(Callable<T> callable)
Callable
,时称,当前上下文的访问控制下执行给定的
callable
,与当前上下文类加载器的上下文类加载器。通常这种方法应该被调用在一个
AccessController.doPrivileged
行动创造可以调用的说明会,如果可能的话,选择权限设置保持在作用下执行;或如果不可能,把相关的
AccessControlException
。
T
-可调用的结果的类型
callable
-基本任务
NullPointerException
如果调用null
AccessControlException
-如果当前上下文的访问控制没有权限设置和获取上下文类加载器
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.