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. vue vite 打包开启 gzip 部署 nginx 支持 gzip

    vite 打包开启 gzip 安装插件 npm i vite-plugin-compression --save-dev vite.config.js 配置 import { defineConfig ...

  2. 复习第二点-2.基于注解的helloworld

    web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="htt ...

  3. Jest - Using test function to test the function

    Note: Please check the prev blog to see the jest configuration. calculator.js const plus = (a, b) =& ...

  4. el-scrollbar滚动加载

    mounted() { 监听滚动条       this.$refs.scrollbar.wrap.addEventListener("scroll", this.scrollCo ...

  5. Kubernetes--Pod生命周期中的重要行为

    Pod生命周期中的重要行为 除了创建应用容器(主容器及其辅助容器)之外,用户还可以为Pod对象定义其生命周期中的多种行为,如初始化容器.存活性探测及就绪性探测等. 初始化容器 初始化容器 (init ...

  6. 学习笔记-Java面向对象

    学习来源: B站[狂神说Java]Java零基础学习视频通俗易懂 static关键字详解 package com.oop.demo07; //static public class Student{ ...

  7. 如何添加Eclipse项目到SVN资源库

    Eclipse项目添加到SVN版资源库有如下好处:一是轻松备份,每天做的修改内容一键提交:二方便合作,比较大的项目,多个人一起工作的时候,每人及时将完成的代码提交,别人可以下载浏览:三展示项目完成进度 ...

  8. 19JS输出杨辉三角

    <!DOCTYPE html> <html lang="en">   <head>     <meta charset="UTF ...

  9. 快速排序(QuiteSort)

    快速排序算法(QuiteSort)是基于分治策略的一个算法.其基本算法是,对于输入的子数组a[p,r],按以下3个步骤进行排序: (1)分解(divide):以 a[p]为基准元素将a[p:r]划分成 ...

  10. john破解linux用户密码

    John是kali-linux自带的密码破解工具,支持密码本破解.Linux的系统账户在/etc/passwd中,密码存于/etc/shadow中. 以下操作为例: (1)创建一个账户,