multithreading执行人


句法

  • 的ThreadPoolExecutor

  • ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue)

  • ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, RejectedExecutionHandler handler)

  • ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory)

  • ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)

  • Executors.callable(PrivilegedAction<?> action)

  • Executors.callable(PrivilegedExceptionAction<?> action)

  • Executors.callable(Runnable task)

  • Executors.callable(Runnable task, T result)

  • Executors.defaultThreadFactory()

  • Executors.newCachedThreadPool()

  • Executors.newCachedThreadPool(ThreadFactory threadFactory)

  • Executors.newFixedThreadPool(int nThreads)

  • Executors.newFixedThreadPool(int nThreads, ThreadFactory threadFactory)

  • Executors.newScheduledThreadPool(int corePoolSize)

  • Executors.newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory)

  • Executors.newSingleThreadExecutor()

  • Executors.newSingleThreadExecutor(ThreadFactory threadFactory)

参数

参数详情
corePoolSize 要保留在池中的最小线程数。
maximumPoolSize 池中允许的最大线程数。
KeepAliveTime的当线程数大于核心数时,非核心线程(多余的空闲线程)将在终止之前等待此参数为新任务定义的时间。
单元 keepAliveTime时间单位。
超时最长等待时间
工作队列我们的Executor将使用的队列类型
的ThreadFactory 工厂在创建新线程时使用
来确定nthreads 池中的线程数
执行者底层实施
任务要运行的任务
结果返回的结果
行动要运行的特权操作
可调用基本任务

备注

下面解释的不同类型的Threadpool和队列来自[oracle documentation] [1]和[Jakob Jenkov] [2]博客的信息和知识,你可以在java中学到很多关于并发性的知识。

不同类型的ThreadPools

SingleThreadExecutor: Executor,它使用单个工作线程操作无限制队列,并在需要时使用提供的ThreadFactory创建新线程。与其他等效的newFixedThreadPool(1,threadFactory)不同,保证返回的执行程序不可重新配置为使用其他线程。

FixedThreadPool:线程池,它重用在共享的无界队列中运行的固定数量的线程,使用提供的ThreadFactory在需要时创建新线程。在任何时候,最多nThreads线程将是活动的处理任务。如果在所有线程都处于活动状态时提交了其他任务,则它们将在队列中等待,直到线程可用。如果任何线程由于在关闭之前执行期间的故障而终止,则如果需要执行后续任务,则新线程将取代它。池中的线程将一直存在,直到它被明确关闭。

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

SingleThreadScheduledExecutor:单线程执行程序,可以调度命令在给定延迟后运行,或定期执行。 (但请注意,如果此单个线程由于在关闭之前执行期间的故障而终止,则在需要执行后续任务时将使用新的线程。)保证任务顺序执行,并且不会有多个任务处于活动状态在任何给定的时间。与其他等效的newScheduledThreadPool(1,threadFactory)不同,保证返回的执行程序不可重新配置以使用其他线程。

ScheduledThreadPool:线程池,可以调度命令在给定延迟后运行,或定期执行。不同类型的工作队列

执行人 相关例子