Executors

if (executor == null || executor.isTerminated()) {
   executor = Executors.newFixedThreadPool(Constants.MAX_WORKER_SIZE);
  }

  try {
   executor.execute(new TWorker(this, playlog));
  } catch (Exception e) {
   e.printStackTrace();
  }

 

public class TWorker extends Thread {
 private final IProcessor processor;

 public TWorker(IProcessor processor) {
  this.processor = processor;
 }

  public void run() {
  try {
   processor.process();
  } catch (RuntimeException e) {
   e.printStackTrace();
  }
 }
}

public static ExecutorService newFixedThreadPool(int nThreads)

创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程。在任意点,在大多数 nThreads 线程会处于处理任务的活动状态。如果在所有线程处于活动状态时提交附加任务,则在有可用线程之前,附加任务将在队列中等待。如果在关闭前的执行期间由于失败而导致任何线程终止,那么一个新线程将代替它执行后续的任务(如果需要)。在某个线程被显式地关闭之前,池中的线程将一直存在。

 

参数:

nThreads - 池中的线程数

返回:

新创建的线程池

抛出:

IllegalArgumentException - 如果 nThreads <= 0


概述 

软件包 

  

使用 

 

已过时 

索引 

帮助 

JavaTM 2 Platform
Standard Ed. 6

 上一个类   下一个类

框架    无框架     所有类

摘要: 嵌套 | 字段 | 构造方法 | 方法

详细信息: 字段 | 构造方法 | 方法


java.util.concurrent
Executors

java.lang.Object

  java.util.concurrent.Executors


public class Executors

extends Object

 

此包中所定义的 ExecutorExecutorServiceScheduledExecutorServiceThreadFactory Callable 类的工厂和实用方法。此类支持以下各种方法:

  • 创建并返回设置有常用配置字符串的 ExecutorService 的方法。
  • 创建并返回设置有常用配置字符串的 ScheduledExecutorService 的方法。
  • 创建并返回包装的”ExecutorService 方法,它通过使特定于实现的方法不可访问来禁用重新配置。
  • 创建并返回 ThreadFactory 的方法,它可将新创建的线程设置为已知的状态。
  • 创建并返回非闭包形式的 Callable 的方法,这样可将其用于需要 Callable 的执行方法中。

 

 

从以下版本开始:

1.5


方法摘要

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()
          
创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。

static ExecutorService

newSingleThreadExecutor(ThreadFactory threadFactory)
          
创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程,并在需要时使用提供的 ThreadFactory 创建新线程。

static ScheduledExecutorService

newSingleThreadScheduledExecutor()
          
创建一个单线程执行程序,它可安排在给定延迟后运行命令或者定期地执行。

static ScheduledExecutorService

newSingleThreadScheduledExecutor(ThreadFactory threadFactory)
          
创建一个单线程执行程序,它可安排在给定延迟后运行命令或者定期地执行。

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)
          
返回一个将所有已定义的 ExecutorService 方法委托给指定执行程序的对象,但是使用强制转换可能无法访问其他方法。

 

从类 java.lang.Object 继承的方法

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

 

方法详细信息

newFixedThreadPool

public static ExecutorService newFixedThreadPool(int nThreads)

创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程。在任意点,在大多数 nThreads 线程会处于处理任务的活动状态。如果在所有线程处于活动状态时提交附加任务,则在有可用线程之前,附加任务将在队列中等待。如果在关闭前的执行期间由于失败而导致任何线程终止,那么一个新线程将代替它执行后续的任务(如果需要)。在某个线程被显式地关闭之前,池中的线程将一直存在。

 

参数:

nThreads - 池中的线程数

返回:

新创建的线程池

抛出:

IllegalArgumentException - 如果 nThreads <= 0


newFixedThreadPool

public static ExecutorService newFixedThreadPool(int nThreads,

                                                 ThreadFactory threadFactory)

创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程,在需要时使用提供的 ThreadFactory 创建新线程。在任意点,在大多数 nThreads 线程会处于处理任务的活动状态。如果在所有线程处于活动状态时提交附加任务,则在有可用线程之前,附加任务将在队列中等待。如果在关闭前的执行期间由于失败而导致任何线程终止,那么一个新线程将代替它执行后续的任务(如果需要)。在某个线程被显式地关闭之前,池中的线程将一直存在。

 

参数:

nThreads - 池中的线程数

threadFactory - 创建新线程时使用的工厂

返回:

新创建的线程池

抛出:

NullPointerException - 如果 threadFactory null

IllegalArgumentException - 如果 nThreads <= 0


newSingleThreadExecutor

public static ExecutorService newSingleThreadExecutor()

创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。(注意,如果因为在关闭前的执行期间出现失败而终止了此单个线程,那么如果需要,一个新线程将代替它执行后续的任务)。可保证顺序地执行各个任务,并且在任意给定的时间不会有多个线程是活动的。与其他等效的 newFixedThreadPool(1) 不同,可保证无需重新配置此方法所返回的执行程序即可使用其他的线程。

 

返回:

新创建的单线程 Executor


newSingleThreadExecutor

public static ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory)

创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程,并在需要时使用提供的 ThreadFactory 创建新线程。与其他等效的 newFixedThreadPool(1, threadFactory) 不同,可保证无需重新配置此方法所返回的执行程序即可使用其他的线程。

 

参数:

threadFactory - 创建新线程时使用的工厂

返回:

新创建的单线程 Executor

抛出:

NullPointerException - 如果 threadFactory null


newCachedThreadPool

public static ExecutorService newCachedThreadPool()

创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。对于执行很多短期异步任务的程序而言,这些线程池通常可提高程序性能。调用 execute 将重用以前构造的线程(如果线程可用)。如果现有线程没有可用的,则创建一个新线程并添加到池中。终止并从缓存中移除那些已有 60 秒钟未被使用的线程。因此,长时间保持空闲的线程池不会使用任何资源。注意,可以使用 ThreadPoolExecutor 构造方法创建具有类似属性但细节不同(例如超时参数)的线程池。

 

返回:

新创建的线程池


newCachedThreadPool

public static ExecutorService newCachedThreadPool(ThreadFactory threadFactory)

创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们,并在需要时使用提供的 ThreadFactory 创建新线程。

 

参数:

threadFactory - 创建新线程时使用的工厂

返回:

新创建的线程池

抛出:

NullPointerException - 如果 threadFactory null


newSingleThreadScheduledExecutor

public static ScheduledExecutorService newSingleThreadScheduledExecutor()

创建一个单线程执行程序,它可安排在给定延迟后运行命令或者定期地执行。(注意,如果因为在关闭前的执行期间出现失败而终止了此单个线程,那么如果需要,一个新线程会代替它执行后续的任务)。可保证顺序地执行各个任务,并且在任意给定的时间不会有多个线程是活动的。与其他等效的 newScheduledThreadPool(1) 不同,可保证无需重新配置此方法所返回的执行程序即可使用其他的线程。

 

返回:

新创建的安排执行程序


newSingleThreadScheduledExecutor

public static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory)

创建一个单线程执行程序,它可安排在给定延迟后运行命令或者定期地执行。(注意,如果因为在关闭前的执行期间出现失败而终止了此单个线程,那么如果需要,一个新线程会代替它执行后续的任务)。可保证顺序地执行各个任务,并且在任意给定的时间不会有多个线程是活动的。与其他等效的 newScheduledThreadPool(1, threadFactory) 不同,可保证无需重新配置此方法所返回的执行程序即可使用其他的线程。

 

参数:

threadFactory - 创建新线程时使用的工厂

返回:

新创建的安排执行程序

抛出:

NullPointerException - 如果 threadFactory null


newScheduledThreadPool

public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)

创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。

 

参数:

corePoolSize - 池中所保存的线程数,即使线程是空闲的也包括在内。

返回:

新创建的安排线程池

抛出:

NullPointerException - 如果 threadFactory null


newScheduledThreadPool

public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize,

                                                              ThreadFactory threadFactory)

创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。

 

参数:

corePoolSize - 池中所保存的线程数,即使线程是空闲的也包括在内

threadFactory - 执行程序创建新线程时使用的工厂

返回:

新创建的安排线程池

抛出:

IllegalArgumentException - 如果 corePoolSize < 0

NullPointerException - 如果 threadFactory null


unconfigurableExecutorService

public static ExecutorService unconfigurableExecutorService(ExecutorService executor)

返回一个将所有已定义的 ExecutorService 方法委托给指定执行程序的对象,但是使用强制转换可能无法访问其他方法。这提供了一种可安全地冻结配置并且不允许调整给定具体实现的方法。

 

参数:

executor - 底层实现

返回:

一个 ExecutorService 实例

抛出:

NullPointerException - 如果 executor null


unconfigurableScheduledExecutorService

public static ScheduledExecutorService unconfigurableScheduledExecutorService(ScheduledExecutorService executor)

返回一个将所有已定义的 ExecutorService 方法委托给指定执行程序的对象,但是使用强制转换可能无法访问其他方法。这提供了一种可安全地冻结配置并且不允许调整给定具体实现的方法。

 

参数:

executor - 底层实现

返回:

一个 ScheduledExecutorService 实例

抛出:

NullPointerException - 如果 executor null


defaultThreadFactory

public static ThreadFactory defaultThreadFactory()

返回用于创建新线程的默认线程工厂。此工厂创建同一 ThreadGroup Executor 使用的所有新线程。如果有 SecurityManager,则它使用 System.getSecurityManager() 组来调用此 defaultThreadFactory 方法,其他情况则使用线程组。每个新线程都作为非守护程序而创建,并且具有设置为 Thread.NORM_PRIORITY 中较小者的优先级以及线程组中允许的最大优先级。新线程具有可通过 pool-N-thread-M Thread.getName() 来访问的名称,其中 N 是此工厂的序列号,M 是此工厂所创建线程的序列号。

 

返回:

线程工厂


privilegedThreadFactory

public static ThreadFactory privilegedThreadFactory()

返回用于创建新线程的线程工厂,这些新线程与当前线程具有相同的权限。此工厂创建具有与 defaultThreadFactory() 相同设置的线程,新线程的 AccessControlContext contextClassLoader 的其他设置与调用此 privilegedThreadFactory 方法的线程相同。可以在 AccessController.doPrivileged(java.security.PrivilegedAction) 操作中创建一个新 privilegedThreadFactory,设置当前线程的访问控制上下文,以便创建具有该操作中保持的所选权限的线程。

注意,虽然运行在此类线程中的任务具有与当前线程相同的访问控制和类加载器,但是它们无需具有相同的 ThreadLocal InheritableThreadLocal 值。如有必要,使用 ThreadPoolExecutor.beforeExecute(java.lang.Thread, java.lang.Runnable) ThreadPoolExecutor 子类中运行任何任务前,可以设置或重置线程局部变量的特定值。另外,如果必须初始化 worker 线程,以具有与某些其他指定线程相同的 InheritableThreadLocal 设置,则可以在线程等待和服务创建请求的环境中创建自定义的 ThreadFactory,而不是继承其值。

 

返回:

线程工厂

抛出:

AccessControlException - 如果当前访问控制上下文没有获取和设置上下文类加载器的权限。


callable

public static <T> Callable<T> callable(Runnable task,

                                       T result)

返回 Callable 对象,调用它时可运行给定的任务并返回给定的结果。这在把需要 Callable 的方法应用到其他无结果的操作时很有用。

 

参数:

task - 要运行的任务

result - 返回的结果

返回:

一个 callable 对象

抛出:

NullPointerException - 如果 task null


callable

public static Callable<Object> callable(Runnable task)

返回 Callable 对象,调用它时可运行给定的任务并返回 null

 

参数:

task - 要运行的任务

返回:

一个 callable 对象

抛出:

NullPointerException - 如果 task null


callable

public static Callable<Object> callable(PrivilegedAction<?> action)

返回 Callable 对象,调用它时可运行给定特权的操作并返回其结果。

 

参数:

action - 要运行的特权操作

返回:

一个 callable 对象

抛出:

NullPointerException - 如果 action null


callable

public static Callable<Object> callable(PrivilegedExceptionAction<?> action)

返回 Callable 对象,调用它时可运行给定特权的异常操作并返回其结果。

 

参数:

action - 要运行的特权异常操作

返回:

一个 callable 对象

抛出:

NullPointerException - 如果 action null


privilegedCallable

public static <T> Callable<T> privilegedCallable(Callable<T> callable)

返回 Callable 对象,调用它时可在当前的访问控制上下文中执行给定的 callable 对象。通常应该在 AccessController.doPrivileged(java.security.PrivilegedAction) 操作中调用此方法,以便创建 callable 对象,并且如有可能,则在该操作中保持的所选权限设置下执行此对象;如果无法调用,则抛出相关的 AccessControlException

 

参数:

callable - 底层任务

返回:

一个 callable 对象

抛出:

NullPointerException - 如果 callable null


privilegedCallableUsingCurrentClassLoader

public static <T> Callable<T> privilegedCallableUsingCurrentClassLoader(Callable<T> callable)

返回 Callable 对象,调用它时可在当前的访问控制上下文中,使用当前上下文类加载器作为上下文类加载器来执行给定的 callable 对象。通常应该在 AccessController.doPrivileged(java.security.PrivilegedAction) 操作中调用此方法,以创建 callable 对象,并且如有可能,则在该操作中保持的所选权限设置下执行此对象;如果无法调用,则抛出相关的 AccessControlException

 

参数:

callable - 底层任务

返回:

一个 callable 对象

抛出:

NullPointerException - 如果 callable null

AccessControlException - 如果当前的访问控制上下文没有设置和获得上下文类加载器的权限。


概述 

软件包 

  

使用 

 

已过时 

索引 

帮助 

JavaTM 2 Platform
Standard Ed. 6

 上一个类   下一个类

框架    无框架     所有类

摘要: 嵌套 | 字段 | 构造方法 | 方法

详细信息: 字段 | 构造方法 | 方法


提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值