public class ThreadPoolUtils
extends java.lang.Object
author: Blankj blog : http://blankj.com time : 2016/8/25 desc : 线程池相关工具类
Modifier and Type | Class and Description |
---|---|
static class |
ThreadPoolUtils.Type |
Constructor and Description |
---|
ThreadPoolUtils(ThreadPoolUtils.Type type,
int corePoolSize)
ThreadPoolUtils构造函数
|
Modifier and Type | Method and Description |
---|---|
boolean |
awaitTermination(long timeout,
java.util.concurrent.TimeUnit unit)
请求关闭、发生超时或者当前线程中断
|
void |
execute(java.util.List<java.lang.Runnable> commands)
在未来某个时间执行给定的命令链表
|
void |
execute(java.lang.Runnable command)
在未来某个时间执行给定的命令
|
<T> java.util.List<java.util.concurrent.Future<T>> |
invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)
执行给定的任务
|
<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)
执行给定的任务
|
<T> T |
invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)
执行给定的任务
|
<T> T |
invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks,
long timeout,
java.util.concurrent.TimeUnit unit)
执行给定的任务
|
boolean |
isShutDown()
判断线程池是否已关闭
|
boolean |
isTerminated()
关闭线程池后判断所有任务是否都已完成
|
<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<?> |
schedule(java.lang.Runnable command,
long delay,
java.util.concurrent.TimeUnit unit)
延迟执行Runnable命令
|
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)
延迟并循环执行命令
|
void |
shutDown()
待以前提交的任务执行完毕后关闭线程池
|
java.util.List<java.lang.Runnable> |
shutDownNow()
试图停止所有正在执行的活动任务
|
<T> java.util.concurrent.Future<T> |
submit(java.util.concurrent.Callable<T> task)
提交一个Callable任务用于执行
|
java.util.concurrent.Future<?> |
submit(java.lang.Runnable task)
提交一个Runnable任务用于执行
|
<T> java.util.concurrent.Future<T> |
submit(java.lang.Runnable task,
T result)
提交一个Runnable任务用于执行
|
public ThreadPoolUtils(ThreadPoolUtils.Type type, int corePoolSize)
type
- 线程池类型corePoolSize
- 只对Fixed和Scheduled线程池起效public void execute(java.lang.Runnable command)
该命令可能在新的线程、已入池的线程或者正调用的线程中执行,这由 Executor 实现决定。
command
- 命令public void execute(java.util.List<java.lang.Runnable> commands)
该命令可能在新的线程、已入池的线程或者正调用的线程中执行,这由 Executor 实现决定。
commands
- 命令链表public void shutDown()
启动一次顺序关闭,执行以前提交的任务,但不接受新任务。 如果已经关闭,则调用没有作用。
public java.util.List<java.lang.Runnable> shutDownNow()
试图停止所有正在执行的活动任务,暂停处理正在等待的任务,并返回等待执行的任务列表。
无法保证能够停止正在处理的活动执行任务,但是会尽力尝试。
public boolean isShutDown()
true
: 是false
: 否public boolean isTerminated()
注意,除非首先调用 shutdown 或 shutdownNow,否则 isTerminated 永不为 true。
true
: 是false
: 否public boolean awaitTermination(long timeout, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException
无论哪一个首先发生之后,都将导致阻塞,直到所有任务完成执行。
timeout
- 最长等待时间unit
- 时间单位true
: 请求成功false
: 请求超时java.lang.InterruptedException
- 终端异常public <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T> task)
如果想立即阻塞任务的等待,则可以使用result = exec.submit(aCallable).get();
形式的构造。
T
- 泛型task
- 任务get
方法在成功完成时将会返回该任务的结果。public <T> java.util.concurrent.Future<T> submit(java.lang.Runnable task, T result)
T
- 泛型task
- 任务result
- 返回的结果get
方法在成功完成时将会返回该任务的结果。public java.util.concurrent.Future<?> submit(java.lang.Runnable task)
task
- 任务get
方法在成功完成时将会返回null结果。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
- 任务集合java.lang.InterruptedException
- 如果等待时发生中断,在这种情况下取消尚未完成的任务。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
- 时间单位java.lang.InterruptedException
- 如果等待时发生中断,在这种情况下取消尚未完成的任务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
- 如果没有任务成功完成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
- 如果在所有任务成功完成之前给定的超时期满public java.util.concurrent.ScheduledFuture<?> schedule(java.lang.Runnable command, long delay, java.util.concurrent.TimeUnit unit)
command
- 命令delay
- 延迟时间unit
- 单位get()
方法在完成后将返回null
public <V> java.util.concurrent.ScheduledFuture<V> schedule(java.util.concurrent.Callable<V> callable, long delay, java.util.concurrent.TimeUnit unit)
V
- 泛型callable
- 命令delay
- 延迟时间unit
- 时间单位public java.util.concurrent.ScheduledFuture<?> scheduleWithFixedRate(java.lang.Runnable command, long initialDelay, long period, java.util.concurrent.TimeUnit unit)
command
- 命令initialDelay
- 首次执行的延迟时间period
- 连续执行之间的周期unit
- 时间单位get()
方法在取消后将抛出异常public java.util.concurrent.ScheduledFuture<?> scheduleWithFixedDelay(java.lang.Runnable command, long initialDelay, long delay, java.util.concurrent.TimeUnit unit)
command
- 命令initialDelay
- 首次执行的延迟时间delay
- 每一次执行终止和下一次执行开始之间的延迟unit
- 时间单位get()
方法在取消后将抛出异常