1 List<List<String>> subList = CommonUtils.splitList(pendingIds, 500);

private static final ThreadFactory NAMED_THREAD_FACTORY =
 2                 new ThreadFactoryBuilder().setNameFormat("syncContractLine-pool-%d").build();
3 ThreadPoolExecutor threadPool = new ThreadPoolExecutor(10, 20, 500, TimeUnit.MILLISECONDS,
4 new LinkedBlockingQueue<>(500), NAMED_THREAD_FACTORY, new ThreadPoolExecutor.AbortPolicy());
5 IRequestContext current = RequestContextManager.getCurrent();
6 List<CompletableFuture<Void>> futureList = new ArrayList<>();
7 for (List<String> subPendingIds : subList) {
8 CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
9 RequestContextManager.setCurrent(current);
10 LOGGER.info("handle contractLines start");
11 if (CommonUtils.isNotEmpty(subPendingIds)) {
12 for (String id : subPendingIds) {
13 map.put("contract", id);
14 iContractHeaderInfoService.syncContractLineInfo(map);
15 }
16 }
17 LOGGER.info("handle contractLines end");
18 }, threadPool);
19 futureList.add(future);
20 }
21 CompletableFuture.allOf(futureList.toArray(new CompletableFuture[futureList.size()])).join();
22 threadPool.shutdown();

CompletableFuture的使用的更多相关文章

  1. Java CompletableFuture 详解

    Future是Java 5添加的类,用来描述一个异步计算的结果.你可以使用isDone方法检查计算是否完成,或者使用get阻塞住调用线程,直到计算完成返回结果,你也可以使用cancel方法停止任务的执 ...

  2. 多线程并发执行任务,取结果归集。终极总结:Future、FutureTask、CompletionService、CompletableFuture

    目录 1.Futrue 2.FutureTask 3.CompletionService 4.CompletableFuture 5.总结 ================正文分割线========= ...

  3. CompletableFuture CompletableFuture.supplyAsync 异常处理

    CompletableFuture 异常处理completeExceptionally可以把异常抛到主线程 /** * User: laizhenwei * Date: 2018-01-30 Time ...

  4. 使用CompletableFuture实现异步编程

    在开发中会碰到一种场景,如下 Object result1 = service1.func1();//执行80ms Object result2 =service2.func2();//执行50ms ...

  5. CompletableFuture基本用法

    异步计算 所谓异步调用其实就是实现一个可无需等待被调用函数的返回值而让操作继续运行的方法.在 Java 语言中,简单的讲就是另启一个线程来完成调用中的部分计算,使调用继续运行或返回,而不需要等待计算结 ...

  6. 使用CompletableFuture优化你的代码执行效率

    这篇文章详细讲解java8中CompletableFuture的特性,方法以及实例. 在java8以前,我们使用java的多线程编程,一般是通过Runnable中的run方法来完成,这种方式,有个很明 ...

  7. 多线程编程CompletableFuture与parallelStream

    一.简介 平常在页面中我们会使用异步调用$.ajax()函数,如果是多个的话他会并行执行相互不影响,实际上Completable我理解也是和它类似,是java 8里面新出的异步实现类,Completa ...

  8. 从CompletableFuture到异步编程设计

    从CompletableFuture到异步编程设计,笔者就分为2部分来分享CompletableFuture异步编程设计,前半部分总结下CompletableFuture使用实践,后半部分分享下Com ...

  9. Java CompletableFuture:allOf等待所有异步线程任务结束

    private void method() throws ExecutionException, InterruptedException { CompletableFuture<String& ...

  10. 【JUC源码解析】CompletableFuture

    简介 先说Future, 它用来描述一个异步计算的结果.isDone方法可以用来检查计算是否完成,get方法可以用来获取结果,直到完成前一直阻塞当前线程,cancel方法可以取消任务.而对于结果的获取 ...

随机推荐

  1. 使用svg让页面自适应浏览器大小,整体等比缩放

    网页代码: <!DOCTYPE html> <html> <head> <style> body { margin:0; padding:0; widt ...

  2. MongoDB升级

    因业务需要所以需要对mongoDB客户端jar包升级,在此记录一些过程 1.jar包替换,引入依赖 3.2.2: mongo-java-driver     |     4.6.1: mongo-dr ...

  3. wps - Word文档打开后不能编辑

    Word文档打开后不能编辑 解决方式 [审阅]-[限制编辑]-[设置文档的保护方式]-[修订]-[启动保护]-[停止保护] Word文档打开后不能编辑,可以这样处理 打开Word文档后,发现无法输入内 ...

  4. python + QML程序中调用WebView后打包

    QML中如果加入了WebView控件,在用pyinstaller打包时不会自动导入,从而导致打包出的程序运行报错,no WebView plugin found,此时需要手动将WebView控件复制到 ...

  5. SSLCipherCheck_v1.4.2

    Usage: sslciphercheck.exe -h <Host> -p <Port> -u <URL> -c <CSV File> -i < ...

  6. echarts:双y轴图表刻度均匀分布问题

    今天分享一个小问题,内容不多. 双y轴图表中,为了图表的美观,经常会隐藏一侧的y轴刻度线,仅显示一侧的刻度线.那么问题就来了,两个y轴的数据数值大小不同,常常会导致刻度线的刻度分布不均匀,该如何解决呢 ...

  7. C/C++中的可变参数

    所需的函数参数不固定,需要用到带有可变参数的函数,类似printf();项目中需要打印信息等也会用到带可变参数的函数. C语言标准库的头文件 #include<stdarg.h>包含一组能 ...

  8. 实验一-密码引擎-加密API实现与测试

    实验一-密码引擎-加密API实现与测试 1 下载并查找GMT 0018-2012密码设备应用接口规范原始文档进行学习 (5分) 2 实现GMT 0018-2012密码设备应用接口规范的接口函数,至少实 ...

  9. Windows下的挖矿木马查杀

    MS016小组(原创) 上一篇文章 简单讲了一下挖矿木马 大概流程  文章地址: https://www.cnblogs.com/ms016/articles/7978880.html 今天讲分析一个 ...

  10. Jmeter学习:时间类函数

    一.__time 功能介绍:按指定格式生成当前时间 ${__time(参数 1,参数 2)} 参数 1:时间格式 参数 2:注册变量名称 二.__timeShift 功能介绍:按格式生成时间格式,并计 ...