Java Executor、Executors、ExecutorService、ThreadPoolExecutor

梦里梦外; 2023-10-08 11:58 40阅读 0赞

一、Executors






































































方法 描述
ExecutorService newSingleThreadExecutor() 是一个单线程的 Executor,它创建单个工作者线程来执行任务,如果这个线程异常结束,会创建另一个线程来替代。并且能确保依照任务在队列中的顺序来串行执行(例如FIFO、LIFO,优先级)。
ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory) 是一个单线程的 Executor,它创建单个工作者线程来执行任务,如果这个线程异常结束,会创建另一个线程来替代。并且能确保依照任务在队列中的顺序来串行执行(例如FIFO、LIFO,优先级)并在需要时使用提供的ThreadFactory创建新线程。
ExecutorService newFixedThreadPool(int nThreads) 将创建一个固定长度的线程池,同一时刻只能有这个长度的线程同时执行。
ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory) 同newFixedThreadPool(int nThreads)
ExecutorService newCachedThreadPool() 将创建一个可缓存的线程池,如果线程池的当前规模超过了处理需求时,那么将回收空闲的线程,而当需求增加时,则可以添加新的线程,线程池的规模不存在任何限制。
ExecutorService newCachedThreadPool(ThreadFactory threadFactory) 同newCachedThreadPool()
ScheduledExecutorService newSingleThreadScheduledExecutor() 创建一个单列线程,而且以延迟或定时的方式来执行任务,类似于Timer 。
ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory) 同newSingleThreadScheduledExecutor()
ScheduledExecutorService newScheduledThreadPool(int corePoolSize) 创建了一个固定长度的线程池,而且以延迟或定时的方式来执行任务,类似于Timer 。
ScheduledExecutorService newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory) 同newScheduledThreadPool(int corePoolSize)
ThreadFactory defaultThreadFactory() 返回用于创建新线程的默认线程工厂。
ThreadFactory privilegedThreadFactory() 返回用于创建具有与当前线程相同权限的新线程的线程工厂。
Callable<Object> callable(PrivilegedAction<?> action) 返回一个Callable对象,该对象在被调用时将运行给定的特权操作并返回其结果。
Callable<Object> callable(PrivilegedExceptionAction<?> action) 返回一个Callable对象,该对象在被调用时将运行给定的特权异常操作并返回其结果。
Callable<Object> callable(Runnable

二、ExecutorService


























































方法 描述
<T> Future<T> submit(Callable<T> task) 提交要执行的返回值任务,并返回表示任务的未决结果的Future。
Future<?> submit(Runnable task) 提交一个Runnable任务以执行并返回一个表示该任务的Future。
<T> Future<T> submit(Runnable task, T result) 提交一个Runnable任务以执行并返回一个表示该任务的Future。
void shutdown() 启动有序关闭,在该关闭中执行先前提交的任务,但不接受任何新任务。
List<Runnable> shutdownNow() 尝试停止所有正在执行的任务,暂停正在等待的任务的处理,并返回正在等待执行的任务的列表。
boolean isTerminated() 返回true所有任务在关闭后是否已完成。
boolean isShutdown() 返回true此执行器是否已关闭。
<T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) 执行给定的任务,如果在给定的超时时间过去之前执行了任何任务,则返回成功完成任务的结果(即,不引发异常)。
<T> T invokeAny(Collection<? extends Callable<T>> tasks) 执行给定的任务,返回成功完成的任务的结果(即,没有引发异常)(如果有的话)。
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) 执行给定的任务,并在所有任务完成或超时到期时(以先发生者为准)返回持有其状态和结果的期货列表。
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) 执行给定的任务,并在所有任务完成时返回保存其状态和结果的期货列表。
boolean awaitTermination(long timeout, TimeUnit unit) 阻塞直到关闭请求后所有任务完成执行,或者发生超时,或者当前线程被中断(以先发生的为准)。

三、ScheduledExecutorService


























方法 描述
<V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit) 创建并执行ScheduledFuture,该ScheduledFuture在给定延迟后启用。
ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit) 创建并执行一次操作,该操作在给定的延迟后变为启用状态。
ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) 创建并执行一个周期性操作,该操作将在给定的初始延迟后首先启用,然后在给定的时间段内启用;也就是说执行将在initialDelaythen initialDelay+period,then等 之后开始 initialDelay + 2 * period。
ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit) 创建并执行一个周期性操作,该操作将在给定的初始延迟后首先启用,然后在一个执行的终止与下一个执行的开始之间具有给定的延迟。

四、ThreadPoolExecutor

ThreadPoolExecutor用来设置自定义的线程池中。

1.1 构造方法

在这里插入图片描述
参数描述:














































名称 类型 描述
corePoolSize int 核心线程池大小
maximumPoolSize int 最大线程池大小
keepAliveTime long 线程最大空闲时间
unit TimeUnit 时间单位
workQueue BlockingQueue 线程等待队列
threadFactory ThreadFactory 线程创建工厂
handler RejectedExecutionHandler 拒绝策略

1.2 常用方法














































































































































方法 描述
protected void afterExecute(Runnable r, Throwable t) 给定Runnable执行完成时调用的方法。
void allowCoreThreadTimeOut(boolean value) 设置策略,以控制在保持活动时间内没有任务到达时核心线程是否可能超时并终止,并在新任务到达时根据需要替换。
boolean allowsCoreThreadTimeOut() 如果此池允许核心线程超时,并且在keepAlive时间内没有任务到达时终止,则返回true;如果有新任务到达,则在需要时替换该线程。
boolean awaitTermination(long timeout, TimeUnit unit) 阻塞直到关闭请求后所有任务完成执行,或者发生超时,或者当前线程被中断(以先发生的为准)。
protected void beforeExecute(Thread t, Runnable r) 在给定线程中执行给定Runnable之前调用的方法。
void execute(Runnable command) 在将来的某个时间执行给定的任务。
protected void finalize() shutdown当该执行程序不再被引用且没有线程时调用。
int getActiveCount() 返回正在主动执行任务的线程的大概数量。
long getCompletedTaskCount() 返回已完成执行的任务的总数。
int getCorePoolSize() 返回线程的核心数量。
long getKeepAliveTime(TimeUnit unit) 返回线程保持活动时间,该时间是超过核心池大小的线程在被终止之前可能保持空闲的时间。
int getLargestPoolSize() 返回池中曾经同时存在的最大线程数。
int getMaximumPoolSize() 返回允许的最大线程数。
int getPoolSize() 返回池中的当前线程数。
BlockingQueue getQueue() 返回此执行程序使用的任务队列。
RejectedExecutionHandler getRejectedExecutionHandler() 返回当前可执行程序的处理程序。
long getTaskCount() 返回计划执行的任务总数。
ThreadFactory getThreadFactory() 返回用于创建新线程的线程工厂。
boolean isShutdown() 返回true此执行器是否已关闭。
boolean isTerminated() 返回true所有任务在关闭后是否已完成。
boolean isTerminating() 如果此执行程序在终止之后shutdown()或shutdownNow()尚未完全终止,则返回true 。
int prestartAllCoreThreads() 启动所有核心线程,使它们空闲地等待工作。
boolean prestartCoreThread() 启动一个核心线程,使其闲置地等待工作。
void purge() 尝试从工作队列中删除所有Future 已取消的任务。
boolean remove(Runnable task) 如果执行程序的内部队列中存在该任务,则将其删除,如果尚未启动,则导致该任务无法运行。
void setCorePoolSize(int corePoolSize) 设置核心线程数。
void setKeepAliveTime(long time, TimeUnit unit) 设置线程在终止之前可能保持空闲的时间限制。
void setMaximumPoolSize(int maximumPoolSize) 设置允许的最大线程数。
void setRejectedExecutionHandler(RejectedExecutionHandler handler) 为无法执行的任务设置新的处理程序。
void setThreadFactory(ThreadFactory threadFactory) 设置用于创建新线程的线程工厂。
void shutdown() 启动有序关闭,在该关闭中执行先前提交的任务,但不接受任何新任务。
List shutdownNow() 尝试停止所有正在执行的任务,暂停正在等待的任务的处理,并返回正在等待执行的任务的列表。
protected void terminated() 执行程序终止时调用的方法。

发表评论

表情:
评论列表 (有 0 条评论,40人围观)

还没有评论,来说两句吧...

相关阅读