public class ExecutorEngine extends Object implements AutoCloseable
app.myoss.cloud.apm.spring.cloud.sleuth.concurrent.TraceableExecutorEngine: 创建可以追踪调用链的多线程池
| Constructor and Description |
|---|
ExecutorEngine(ExecutorService delegate)
创建多线程执行框架
|
| Modifier and Type | Method and Description |
|---|---|
<O> void |
addCallback(com.google.common.util.concurrent.ListenableFuture<O> allFutures)
为多线程任务添加回调监控
|
static ExecutorEngine |
buildTreadPoolExecutor()
创建 ThreadPoolExecutor 多线程池。默认值如下:
|
void |
close() |
<I,M,O> O |
execute(Collection<I> inputs,
ExecuteUnit<I,M> executeUnit,
MergeUnit<M,O> mergeUnit)
多线程执行任务并归并结果.
|
<I,M,O> O |
execute(Collection<I> inputs,
ExecuteUnit<I,M> executeUnit,
MergeUnit<M,O> mergeUnit,
Long timeout,
TimeUnit timeUnit)
多线程执行任务并归并结果.
|
<I,O> List<O> |
execute(Collection<I> inputs,
ExecuteUnit<I,O> executeUnit)
多线程执行任务.
|
<I,O> List<O> |
execute(Collection<I> inputs,
ExecuteUnit<I,O> executeUnit,
Long timeout,
TimeUnit timeUnit)
多线程执行任务.
|
<I,O> List<O> |
execute(I input,
Collection<ExecuteUnit<I,O>> executeUnits,
Long timeout,
TimeUnit timeUnit)
多线程执行任务.
|
<O> List<O> |
execute(int size,
ExecuteUnit<Integer,O> executeUnit)
多线程执行任务.
|
<O> List<O> |
execute(int size,
ExecuteUnit<Integer,O> executeUnit,
Long timeout,
TimeUnit timeUnit)
多线程执行任务.
|
<O> O |
getFutureResults(com.google.common.util.concurrent.ListenableFuture<O> allFutures,
Long timeout,
TimeUnit timeUnit)
获取多线程任务执行的最终结果
|
<I,O> com.google.common.util.concurrent.ListenableFuture<List<O>> |
submitFutures(Collection<I> inputs,
ExecuteUnit<I,O> executeUnit)
提交多线程任务.
|
<I,O> com.google.common.util.concurrent.ListenableFuture<List<O>> |
submitFutures(I input,
Collection<ExecuteUnit<I,O>> executeUnits)
提交多线程任务.
|
public ExecutorEngine(ExecutorService delegate)
delegate - an instance of ExecutorServicepublic static ExecutorEngine buildTreadPoolExecutor()
corePoolSize 指的是保留的线程池大小,默认值为:5。
maximumPoolSize 指的是线程池的最大大小,默认值为:200。
keepAliveTime 指的是空闲线程结束的超时时间,默认值为:0。
unit 是一个枚举,表示 keepAliveTime 的单位,默认值为:TimeUnit.MILLISECONDS。
workQueue 表示存放任务的队列,默认值为:1024。
public void close()
close in interface AutoCloseablepublic <I,O> List<O> execute(I input, Collection<ExecuteUnit<I,O>> executeUnits, Long timeout, TimeUnit timeUnit)
// Demo示例 String param = "Myoss😍"; List<ExecuteUnit<String, String>> executeUnits = new ArrayList<>(); executeUnits.add(EmojiUtils::addBackslash); executeUnits.add(EmojiUtils::removeBackslash); List<String> execute = executorEngine.execute(param, executeUnits, timeout, timeUnit);
I - 入参类型O - 出参类型input - 输入参数executeUnits - 多个执行单元timeout - 执行超时时间(可选参数),因为是并发去执行,线程足够多的时候,全部执行下来,只需要花费单个执行的时间(无限接近)timeUnit - 执行超时时间单位(可选参数,如果设置了 timeout,没有设置 timeUnit,则默认使用
TimeUnit.MILLISECONDS)public <I,O> List<O> execute(Collection<I> inputs, ExecuteUnit<I,O> executeUnit, Long timeout, TimeUnit timeUnit)
I - 入参类型O - 出参类型inputs - 输入参数executeUnit - 执行单元timeout - 执行超时时间(可选参数),因为是并发去执行,线程足够多的时候,全部执行下来,只需要花费单个执行的时间(无限接近)timeUnit - 执行超时时间单位(可选参数,如果设置了 timeout,没有设置 timeUnit,则默认使用
TimeUnit.MILLISECONDS)public <I,O> List<O> execute(Collection<I> inputs, ExecuteUnit<I,O> executeUnit)
I - 入参类型O - 出参类型inputs - 输入参数executeUnit - 执行单元public <O> List<O> execute(int size, ExecuteUnit<Integer,O> executeUnit, Long timeout, TimeUnit timeUnit)
O - 出参类型size - 最多执行几次executeUnit - 执行单元timeout - 执行超时时间(可选参数),因为是并发去执行,线程足够多的时候,全部执行下来,只需要花费单个执行的时间(无限接近)timeUnit - 执行超时时间单位(可选参数,如果设置了 timeout,没有设置 timeUnit,则默认使用
TimeUnit.MILLISECONDS)public <O> List<O> execute(int size, ExecuteUnit<Integer,O> executeUnit)
O - 出参类型size - 最多执行几次executeUnit - 执行单元public <I,M,O> O execute(Collection<I> inputs, ExecuteUnit<I,M> executeUnit, MergeUnit<M,O> mergeUnit, Long timeout, TimeUnit timeUnit)
I - 入参类型M - 中间结果类型O - 最终结果类型inputs - 执行入参executeUnit - 执行单元mergeUnit - 合并结果单元timeout - 执行超时时间(可选参数),因为是并发去执行,线程足够多的时候,全部执行下来,只需要花费单个执行的时间(无限接近)timeUnit - 执行超时时间单位(可选参数,如果设置了 timeout,没有设置 timeUnit,则默认使用
TimeUnit.MILLISECONDS)public <I,M,O> O execute(Collection<I> inputs, ExecuteUnit<I,M> executeUnit, MergeUnit<M,O> mergeUnit)
I - 入参类型M - 中间结果类型O - 最终结果类型inputs - 执行入参executeUnit - 执行单元mergeUnit - 合并结果单元public <I,O> com.google.common.util.concurrent.ListenableFuture<List<O>> submitFutures(Collection<I> inputs, ExecuteUnit<I,O> executeUnit)
I - 入参类型O - 最终结果类型inputs - 执行入参executeUnit - 执行单元public <I,O> com.google.common.util.concurrent.ListenableFuture<List<O>> submitFutures(I input, Collection<ExecuteUnit<I,O>> executeUnits)
I - 入参类型O - 最终结果类型input - 执行入参executeUnits - 多个执行单元public <O> void addCallback(com.google.common.util.concurrent.ListenableFuture<O> allFutures)
O - 最终结果类型allFutures - 多线程任务public <O> O getFutureResults(com.google.common.util.concurrent.ListenableFuture<O> allFutures,
Long timeout,
TimeUnit timeUnit)
O - 最终结果类型allFutures - 多线程任务timeout - 执行超时时间(可选参数),因为是并发去执行,线程足够多的时候,全部执行下来,只需要花费单个执行的时间(无限接近)timeUnit - 执行超时时间单位(可选参数,如果设置了 timeout,没有设置 timeUnit,则默认使用
TimeUnit.MILLISECONDS)Copyright © 2018–2019. All rights reserved.