IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 根据日期长度进行多线程查询 -> 正文阅读

[开发测试]根据日期长度进行多线程查询

TestReq req = getTestReq();// 入参集合

/**

*DateUtil.parseLocalDateTime(param1, param2)可以识别param2格式的param1,将String(CharSequence)类型的参数转换为LocalDateTime

*/

LocalDateTime start = DateUtil.parseLocalDateTime(req.getStartDay(), "yyyyMMdd");

LocalDateTime end = DateUtil.parseLocalDateTime(req.getEndDay(), "yyyyMMdd");

List<Future<TestResp>> futureList = new ArrayList<>();

/**

*开始做切分

* DAY1.isBefore(DAY2)用来判断DAY1是否处于DAY2之前

*DAY1.isEqual(DAY2)用来判断DAY1是否与DAY2相等

*/

while (start.isBefore(end) || start.isEqual(end)) {

/**

* DAY.plusDays(时间段)返回一个在DAY基础上添加了时间段的LocalDateTime时间

*/

LocalDateTime mid = start.plusDays(30);

LocalDateTime early = mid.isBefore(end) ? mid : end;

req.setStartDay(DateUtil.format(start, "yyyy-MM-dd");

req.setEndDay(DateUtil.format(end, "yyyy-MM-dd");

start = early.plusDays(1);

/**

*executor来自于@Resource注解注入

*@Resource(name = "commonExecutorService")

*private ExecutorService executor;

*commonExecutorService是在一个配置类中写的ExecutorService服务,之后有代码

*这一行表示使用ExecutorService执行Callable类型的任务,并将结果保存在future变量中

*/

futureList.add(executor.submit(() -> testGateway.getTest(req)));

}

for (Future<TestResp> future : futureList)

{

TestResp resp?= new TestResp();

try {

/**

*future.get(超时时间,单位)用来超时关闭线程

*/

resp = future.get(5, TimeUnit.SECONDS);

} catch (Exception e) {

log.warn("splitByDayQuery request dos error", e);

}

}

@Configuration
public class ThreadPoolConfig {
    
    @Bean(destroyMethod = "shutdown")
    public ExecutorService commonExecutorService() {
        
        String threadNamePrefix = "common-executor-service-Thread-pool-";
        
        ThreadPoolExecutor executor = new TraceableThreadPoolExecutor(20, 40, 5, TimeUnit.MINUTES,
                new LinkedBlockingQueue<>(200), new CustomizableThreadFactory(threadNamePrefix),
                new ThreadPoolExecutor.CallerRunsPolicy());
        
        ThreadPoolInfoUtil.putPool(threadNamePrefix, executor);
        
        return executor;
        
    }
}

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 19:07:17  更:2022-04-22 19:08:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 9:42:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码