类 DevThreadPool
- java.lang.Object
-
- dev.utils.common.thread.DevThreadPool
-
public final class DevThreadPool extends java.lang.Objectdetail: 线程池 ( 构建类 )- 作者:
- Ttt
- 另请参阅:
-
创建线程池 ( 参数 )
1. 线程池里面管理多少个线程
2. 如果排队满了, 额外的开的线程数
3. 如果线程池没有要执行的任务存活多久
4. 时间的单位
5. 如果 线程池里管理的线程都已经用了, 剩下的任务临时存到 LinkedBlockingQueue 对象中排队
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue
workQueue) { this (corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, Executors.defaultThreadFactory(), defaultHandler); }
-
-
嵌套类概要
嵌套类 修饰符和类型 类 说明 static classDevThreadPool.DevThreadPoolTypedetail: 线程池初始化枚举类型
-
构造器概要
构造器 构造器 说明 DevThreadPool(int threadNumber)构造函数DevThreadPool(DevThreadPool.DevThreadPoolType devThreadPoolType)构造函数DevThreadPool(java.util.concurrent.ExecutorService threadPool)构造函数
-
方法概要
所有方法 静态方法 实例方法 具体方法 修饰符和类型 方法 说明 booleanawaitTermination(long timeout, java.util.concurrent.TimeUnit unit)请求关闭、发生超时或者当前线程中断 无论哪一个首先发生之后, 都将导致阻塞, 直到所有任务完成执行voidexecute(java.lang.reflect.Method method, java.lang.Object object)通过反射, 调用某个类的方法voidexecute(java.lang.Runnable runnable)加入到线程池任务队列voidexecute(java.util.List<java.lang.Runnable> runnables)加入到线程池任务队列static intgetCalcThreads()获取线程数static intgetThreads()获取线程数<T> java.util.List<java.util.concurrent.Future<T>>invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)执行给定的任务 当所有任务完成时, 返回保持任务状态和结果的 Future 列表 返回列表的所有元素的Future.isDone()为true注意, 可以正常地或通过抛出异常来终止已完成任务 如果正在进行此操作时修改了给定的 collection, 则此方法的结果是不确定的<T> java.util.List<java.util.concurrent.Future<T>>invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks, long timeout, java.util.concurrent.TimeUnit unit)执行给定的任务 当所有任务完成或超时期满时 ( 无论哪个首先发生 ), 返回保持任务状态和结果的 Future 列表 返回列表的所有元素的Future.isDone()为true一旦返回后, 即取消尚未完成的任务 注意, 可以正常地或通过抛出异常来终止已完成任务 如果此操作正在进行时修改了给定的 collection, 则此方法的结果是不确定的<T> TinvokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)执行给定的任务 如果某个任务已成功完成 ( 也就是未抛出异常 ), 则返回其结果 一旦正常或异常返回后, 则取消尚未完成的任务 如果此操作正在进行时修改了给定的 collection, 则此方法的结果是不确定的<T> TinvokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks, long timeout, java.util.concurrent.TimeUnit unit)执行给定的任务 如果在给定的超时期满前某个任务已成功完成 ( 也就是未抛出异常 ), 则返回其结果 一旦正常或异常返回后, 则取消尚未完成的任务 如果此操作正在进行时修改了给定的 collection, 则此方法的结果是不确定的booleanisShutdown()判断线程池是否已关闭 ( isShutDown 当调用 shutdown() 方法后返回为 true )booleanisTerminated()若关闭后所有任务都已完成, 则返回 true 注意除非首先调用 shutdown 或 shutdownNow, 否则 isTerminated 永不为 true isTerminated 当调用 shutdown() 方法后, 并且所有提交的任务完成后返回为 truejava.util.concurrent.ScheduledFuture<?>schedule(java.lang.Runnable command, long delay, java.util.concurrent.TimeUnit unit)延迟执行 Runnable 命令<V> java.util.concurrent.ScheduledFuture<V>schedule(java.util.concurrent.Callable<V> callable, long delay, java.util.concurrent.TimeUnit unit)延迟执行 Callable 命令java.util.concurrent.ScheduledFuture<?>scheduleWithFixedDelay(java.lang.Runnable command, long initialDelay, long delay, java.util.concurrent.TimeUnit unit)延迟并以固定休息时间循环执行命令java.util.concurrent.ScheduledFuture<?>scheduleWithFixedRate(java.lang.Runnable command, long initialDelay, long period, java.util.concurrent.TimeUnit unit)延迟并循环执行命令voidshutdown()shutdown 会等待所有提交的任务执行完成, 不管是正在执行还是保存在任务队列中的已提交任务 待以前提交的任务执行完毕后关闭线程池 启动一次顺序关闭, 执行以前提交的任务, 但不接受新任务 如果已经关闭, 则调用没有作用java.util.List<java.lang.Runnable>shutdownNow()shutdownNow 会尝试中断正在执行的任务 ( 其主要是中断一些指定方法如 sleep 方法 ) , 并且停止执行等待队列中提交的任务 试图停止所有正在执行的活动任务, 暂停处理正在等待的任务, 并返回等待执行的任务列表 无法保证能够停止正在处理的活动执行任务, 但是会尽力尝试java.util.concurrent.Future<?>submit(java.lang.Runnable task)提交一个 Runnable 任务用于执行<T> java.util.concurrent.Future<T>submit(java.lang.Runnable task, T result)提交一个 Runnable 任务用于执行<T> java.util.concurrent.Future<T>submit(java.util.concurrent.Callable<T> task)提交一个 Callable 任务用于执行 如果想立即阻塞任务的等待, 则可以使用result = threadPool.submit(aCallable).get();形式的构造
-
-
-
构造器详细资料
-
DevThreadPool
public DevThreadPool(int threadNumber)
构造函数- 参数:
threadNumber- 线程数量
-
DevThreadPool
public DevThreadPool(java.util.concurrent.ExecutorService threadPool)
构造函数- 参数:
threadPool-ExecutorService
-
DevThreadPool
public DevThreadPool(DevThreadPool.DevThreadPoolType devThreadPoolType)
构造函数- 参数:
devThreadPoolType- 线程初始化类型DevThreadPool.DevThreadPoolType
-
-
方法详细资料
-
getThreads
public static int getThreads()
获取线程数- 返回:
getCalcThreads()
-
getCalcThreads
public static int getCalcThreads()
获取线程数- 返回:
- 自动计算 CPU 核心数
-
execute
public void execute(java.lang.Runnable runnable)
加入到线程池任务队列- 参数:
runnable- 线程
-
execute
public void execute(java.util.List<java.lang.Runnable> runnables)
加入到线程池任务队列- 参数:
runnables- 线程集合
-
execute
public void execute(java.lang.reflect.Method method, java.lang.Object object)通过反射, 调用某个类的方法- 参数:
method- 方法object- 对象
-
shutdown
public void shutdown()
shutdown 会等待所有提交的任务执行完成, 不管是正在执行还是保存在任务队列中的已提交任务 待以前提交的任务执行完毕后关闭线程池 启动一次顺序关闭, 执行以前提交的任务, 但不接受新任务 如果已经关闭, 则调用没有作用
-
shutdownNow
public java.util.List<java.lang.Runnable> shutdownNow()
shutdownNow 会尝试中断正在执行的任务 ( 其主要是中断一些指定方法如 sleep 方法 ) , 并且停止执行等待队列中提交的任务 试图停止所有正在执行的活动任务, 暂停处理正在等待的任务, 并返回等待执行的任务列表 无法保证能够停止正在处理的活动执行任务, 但是会尽力尝试- 返回:
List
-
isShutdown
public boolean isShutdown()
判断线程池是否已关闭 ( isShutDown 当调用 shutdown() 方法后返回为 true )- 返回:
trueyes,falseno
-
isTerminated
public boolean isTerminated()
若关闭后所有任务都已完成, 则返回 true 注意除非首先调用 shutdown 或 shutdownNow, 否则 isTerminated 永不为 true isTerminated 当调用 shutdown() 方法后, 并且所有提交的任务完成后返回为 true- 返回:
trueyes,falseno
-
awaitTermination
public boolean awaitTermination(long timeout, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException请求关闭、发生超时或者当前线程中断 无论哪一个首先发生之后, 都将导致阻塞, 直到所有任务完成执行- 参数:
timeout- 最长等待时间unit- 时间单位- 返回:
true请求成功,false请求超时- 抛出:
java.lang.InterruptedException- 终端异常
-
submit
public <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T> task)
提交一个 Callable 任务用于执行 如果想立即阻塞任务的等待, 则可以使用result = threadPool.submit(aCallable).get();形式的构造- 类型参数:
T- 泛型- 参数:
task- 任务- 返回:
- 表示任务等待完成的 Future, 该 Future 的
get方法在成功完成时将会返回该任务的结果
-
submit
public <T> java.util.concurrent.Future<T> submit(java.lang.Runnable task, T result)提交一个 Runnable 任务用于执行- 类型参数:
T- 泛型- 参数:
task- 任务result- 返回的结果- 返回:
- 表示任务等待完成的 Future, 该 Future 的
get方法在成功完成时将会返回该任务的结果
-
submit
public java.util.concurrent.Future<?> submit(java.lang.Runnable task)
提交一个 Runnable 任务用于执行- 参数:
task- 任务- 返回:
- 表示任务等待完成的 Future, 该 Future 的
get方法在成功完成时将会返回 null 结果
-
invokeAll
public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks) throws java.lang.InterruptedException执行给定的任务 当所有任务完成时, 返回保持任务状态和结果的 Future 列表 返回列表的所有元素的Future.isDone()为true注意, 可以正常地或通过抛出异常来终止已完成任务 如果正在进行此操作时修改了给定的 collection, 则此方法的结果是不确定的- 类型参数:
T- 泛型- 参数:
tasks- 任务集合- 返回:
- 表示任务的 Future 列表, 列表顺序与给定任务列表的迭代器所生成的顺序相同, 每个任务都已完成
- 抛出:
java.lang.InterruptedException- 如果等待时发生中断, 在这种情况下取消尚未完成的任务
-
invokeAll
public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks, long timeout, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException执行给定的任务 当所有任务完成或超时期满时 ( 无论哪个首先发生 ), 返回保持任务状态和结果的 Future 列表 返回列表的所有元素的Future.isDone()为true一旦返回后, 即取消尚未完成的任务 注意, 可以正常地或通过抛出异常来终止已完成任务 如果此操作正在进行时修改了给定的 collection, 则此方法的结果是不确定的- 类型参数:
T- 泛型- 参数:
tasks- 任务集合timeout- 最长等待时间unit- 时间单位- 返回:
- 表示任务的 Future 列表, 列表顺序与给定任务列表的迭代器所生成的顺序相同 如果操作未超时, 则已完成所有任务, 如果确实超时了, 则某些任务尚未完成
- 抛出:
java.lang.InterruptedException- 如果等待时发生中断, 在这种情况下取消尚未完成的任务
-
invokeAny
public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException执行给定的任务 如果某个任务已成功完成 ( 也就是未抛出异常 ), 则返回其结果 一旦正常或异常返回后, 则取消尚未完成的任务 如果此操作正在进行时修改了给定的 collection, 则此方法的结果是不确定的- 类型参数:
T- 泛型- 参数:
tasks- 任务集合- 返回:
- 某个任务返回的结果
- 抛出:
java.lang.InterruptedException- 如果等待时发生中断java.util.concurrent.ExecutionException- 如果没有任务成功完成
-
invokeAny
public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks, long timeout, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException, java.util.concurrent.TimeoutException执行给定的任务 如果在给定的超时期满前某个任务已成功完成 ( 也就是未抛出异常 ), 则返回其结果 一旦正常或异常返回后, 则取消尚未完成的任务 如果此操作正在进行时修改了给定的 collection, 则此方法的结果是不确定的- 类型参数:
T- 泛型- 参数:
tasks- 任务集合timeout- 最长等待时间unit- 时间单位- 返回:
- 某个任务返回的结果
- 抛出:
java.lang.InterruptedException- 如果等待时发生中断java.util.concurrent.ExecutionException- 如果没有任务成功完成java.util.concurrent.TimeoutException- 如果在所有任务成功完成之前给定的超时期满
-
schedule
public java.util.concurrent.ScheduledFuture<?> schedule(java.lang.Runnable command, long delay, java.util.concurrent.TimeUnit unit)延迟执行 Runnable 命令- 参数:
command- 命令delay- 延迟时间unit- 单位- 返回:
- 表示挂起任务完成的 ScheduledFuture, 并且其
get()方法在完成后将返回null
-
schedule
public <V> java.util.concurrent.ScheduledFuture<V> schedule(java.util.concurrent.Callable<V> callable, long delay, java.util.concurrent.TimeUnit unit)延迟执行 Callable 命令- 类型参数:
V- 泛型- 参数:
callable- 命令delay- 延迟时间unit- 时间单位- 返回:
- 可用于提取结果或取消的 ScheduledFuture
-
scheduleWithFixedRate
public java.util.concurrent.ScheduledFuture<?> scheduleWithFixedRate(java.lang.Runnable command, long initialDelay, long period, java.util.concurrent.TimeUnit unit)延迟并循环执行命令- 参数:
command- 命令initialDelay- 首次执行的延迟时间period- 连续执行之间的周期unit- 时间单位- 返回:
- 表示挂起任务完成的 ScheduledFuture, 并且其
get()方法在取消后将抛出异常
-
scheduleWithFixedDelay
public java.util.concurrent.ScheduledFuture<?> scheduleWithFixedDelay(java.lang.Runnable command, long initialDelay, long delay, java.util.concurrent.TimeUnit unit)延迟并以固定休息时间循环执行命令- 参数:
command- 命令initialDelay- 首次执行的延迟时间delay- 每一次执行终止和下一次执行开始之间的延迟unit- 时间单位- 返回:
- 表示挂起任务完成的 ScheduledFuture, 并且其
get()方法在取消后将抛出异常
-
-