Callable多线程实现执行不同方法获取同一结果
直接上代码
public class GetQyWxDetail {
public void getDetail() throws Exception {//创建线程数为3的定长线程池ExecutorService executorService = Executors.newFixedThreadPool(3);//查询结果存储List<Future<List<Map>>> futureList = new ArrayList<>();//执行方法的标识String[] flagHouse = {"test1", "test2", "test3"};for (int i = 0; i < 3; i++) {String flag = flagHouse[i];Callable<List<Map>> task = () -> requestForService(flag);//执行查询方法Future<List<Map>> future = executorService.submit(task);//存储查询结果futureList.add(future);}//查询结果汇总List<Map> result = new ArrayList<>();try {//获得结果for (Future<List<Map>> future : futureList) {List<Map> param = future.get();//去重HashSet set = new HashSet(param);//把HashSet对象添加至List集合result.addAll(set);}} catch (InterruptedException e) {//任务调用get的线程在获得结果之前被中断,重新设置线程的中断状态Thread.currentThread().interrupt();} catch (ExecutionException e) {e.printStackTrace();} finally {executorService.shutdown();}//执行入库insertQyWxSend(result);}/*** 讲信息写入到企微群发中间表** @param result* @date 2022/7/12*/
public void insertQyWxSend(List<Map> result) {}/*** 根据不同的指示,执行不同的查询方法,并返回企微群发中间表相关字段信息** @param flag* @return {@link List< Map> }* @date 2022/7/12*/
public List<Map> requestForService(String flag) {List<Map> maps = new ArrayList<>();switch (flag) {case "test1":log.info("执行方法1返回结果,存放到maps");break;case "test2":log.info("执行方法2返回结果,存放到maps");break;}return maps;
}
}
Callable多线程实现执行不同方法获取同一结果相关推荐
- java中thread实例_Java多线程并发执行demo代码实例
主类:MultiThread,执行并发类 package java8test; import java.util.ArrayList; import java.util.List; import ja ...
- new Random().Next(1, 100); 多线程同时执行结果很高概率相同,
/// <summary>/// new Random().Next(1, 100); 多线程同时执行结果很高概率相同,/// 是用的当前时间为seed,时间相同结果相同/// /// 解 ...
- 定时线程_SpringBoot定时任务,@Async多线程异步执行
一.使用SpringBoot实现定时任务 这个不是重点,就简单的实现一下,至于cron表达式怎么写也不是重点,自行百度即可. 1-1.基于 @Scheduled 注解的方式 import org.sp ...
- java商城项目中多线程执行_java多线程中执行多个程序的实例分析
我们知道多线程因为同时处理子线程的能力,对于程序运行来说,能够达到很高的效率.不过很多人对于多线程的执行方法还没有尝试过,本篇我们将为大家介绍创建线程的方法,在这个基础上,对程序执行多条命令的方法进行 ...
- c++11 多线程 顺序执行_前阿里P8架构师总结的一些关于Java多线程的编程经验丨干货...
推荐阅读 Java程序员备战"金九银十"必备的面试技巧(附阿里Java岗面试题) 一.认识多任务.多进程.单线程.多线程 要认识多线程就要从操作系统的原理说起. 以前古老的DOS操 ...
- springboot前端长轮询使用多线程异步执行任务
1.springboot使用多线程任务时bean 不能使用@Autowired注入 可以提供一个外部类去获取bean对象 @Component public class ApplicationProv ...
- 【嵌入式Linux应用开发】温湿度监控系统——多线程与温湿度的获取显示
1. 概述 在前几篇的文章中,我们已经学习了LVGL界面绘制以及paho mqtt的同步客户端和异步客户端的操作,那么本篇就会综合前面的知识,加上Linux系统的多线程以及线程间通信的知识,将LV ...
- Java中控制多线程顺序执行
Java中控制多线程顺序执行 一.概述 二.普通示例 三.控制示例 3.1.设置线程优先级 3.2.使用线程类的join() 3.2.1.在主线程join() 3.2.2.在子线程join() 3.3 ...
- C#中使用Monitor类、Lock和Mutex类来同步多线程的执行(转)
C#中使用Monitor类.Lock和Mutex类来同步多线程的执行 在多线程中,为了使数据保持一致性必须要对数据或是访问数据的函数加锁,在数据库中这是很常见的,但是在程序中由于大部分都是单线程的程序 ...
最新文章
- android的UDC功能,Android实现搜索历史功能
- 01-python中字符串的常见操作
- zookeeper开机自启动
- Linux基础学习一:初步认识linux
- 向量表示,投影,协方差矩阵,PCA
- Linux学习体会。
- 币安选择InfStones作为以太坊2.0 Staking基础设施服务商
- 在docker中配置apt工具与python的源均为国内源
- 【二分答案】【NOIP模拟10-21】的士碰撞
- nodejs安装anywhere快速启动一个web服务
- android桌面快捷网页,Android向桌面添加快捷方式,使其指向特定的网页
- 绝地求生刺激战场辅助卧底外挂群,菜鸟一秒变高手
- ERP原理学习3-5
- 哔哩哔哩下载的视频怎么找不到?
- 【万人围观】20位著名作家,100句惊艳了时光的名句
- cacheable更新_Spring之缓存注解@Cacheable
- Ajax请求成功却执行error回调方法(Ajax跨域请求问题)
- iOS 简单实用的音乐播放器,少年,自己做个歌单吧。。。。。。
- lol服务器什么时候维护,lol等短时间维护是什么?lol11月23日服务器维护详情介绍...
- 安卓手机很快也要普及3D Touch了