Java Executor 类

2025 年 5 月 8 日 | 阅读 3 分钟

本包中定义的 Executor、ExecutorService、ScheduledExecutorService、ThreadFactory 和 Callable 类的工厂和工具方法。此类支持以下类型的方法:

  • 创建并返回一个配置了常用设置的 ExecutorService 的方法。
  • 创建并返回一个配置了常用设置的 ScheduledExecutorService 的方法。
  • 创建并返回一个“包装”的 ExecutorService 的方法,通过使实现特定的方法不可访问来禁止重新配置。
  • 创建并返回一个 ThreadFactory 的方法,该工厂将新创建的线程设置为已知状态。
  • 创建并返回其他类闭包形式的 Callable 的方法,以便它们可以在需要 Callable 的执行方法中使用。

Java Executor 类声明

Executors 类方法列表

方法描述
1.public static Callable<Object> callable(Runnable task)
public static <T> Callable<T> callable(Runnable task, T result)
public static Callable<Object> callable(PrivilegedAction<?> action)
public static Callable<Object> callable(PrivilegedExceptionAction<?> action)
Executors 类的 Callable() 方法返回一个 Callable 对象,该对象在被调用时会运行给定的任务并返回 null。
2.public static ThreadFactory defaultThreadFactory()Executors 类的 defaultThreadFactory() 方法返回一个用于创建新线程的默认线程工厂。此工厂在同一个 ThreadGroup 中创建 Executor 使用的所有新线程。如果存在 SecurityManager,它将使用 System 的组。
3.public static ExecutorService newCachedThreadPool()
public static ExecutorService newCachedThreadPool (ThreadFactory threadFactory)
Executors 类的 newCachedThreadPool() 方法创建一个线程池,该线程池在需要时创建新线程,但在可用时会重用先前构造的线程。
4.public static ExecutorService newFixedThreadPool(int nThreads)
public static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory)
Executors 类的 newFixedThreadPool() 方法创建一个线程池,该线程池在共享的无界队列上重用固定数量的线程。在任何给定时间,最多 n 个线程将处于活动状态以处理任务。如果所有线程都处于活动状态时提交了其他任务,它们将等待在队列中直到有可用线程。
5.public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory)
Executors 类的 newScheduledThreadPool() 方法创建一个可以安排命令在给定延迟后运行或定期执行的线程池。
6.public static ExecutorService newSingleThreadExecutor()
public static ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory)
Executors 类的 newSingleThreadExecutor() 方法创建一个 Executor,该 Executor 使用一个工作线程处理无界队列。(但请注意,如果此单个线程在关闭前因执行期间的故障而终止,则在需要执行后续任务时,将会有新的线程接替它)。
7.public static ExecutorService newWorkStealingPool()
public static ExecutorService newWorkStealingPool(int parallelism)
Executors 类的 newWorkStealingPool() 方法创建一个工作窃取线程池,该线程池使用可用处理器数量作为其目标并行级别。
8.public static ThreadFactory privilegedThreadFactory()Executors 类的 privilegedThreadFactory() 方法返回一个线程工厂,用于创建具有与当前线程相同权限的新线程。此工厂创建的线程具有与 defaultThreadFactory() 相同的设置,此外还将新线程的 AccessControlContext 和 contextClassLoader 设置为与调用此 privilegedThreadFactory 方法的线程相同。

Java Executor 类示例:privilegedThreadFactory()

输出

Running thread concurrently

Java Executor 类示例:newCachedThreadPool()

输出

size of mypool: 0
Total number threads scheduled): 2
Thread Name: pool-1-thread-2
Thread Name: pool-1-thread-1
after sleep Thread Name: pool-1-thread-2
after sleep Thread Name: pool-1-thread-1
下一主题Java Executors