前言:前段时间有个需求,需要循环调用多次中台接口查询数据,为了减少等待时间采用多线程的方式调用 不多bb,直接上测试代码 @Test public void testMultiThread() throws InterruptedException { ...
前言:前段时间有个需求,需要循环调用多次中台接口查询数据,为了减少等待时间采用多线程的方式调用
不多bb,直接上测试代码
@Test
public void testMultiThread() throws InterruptedException {
int i = 5;
System.out.println("=====多线程开始=====");
// 创建闭锁对象抓住所有线程,构造器指定倒数次数
CountDownLatch countDownLatch = new CountDownLatch(i);
while (i > 0) {
int finalI = i;
// 启用多线程
CompletableFuture.runAsync(() -> {
System.out.println(finalI);
// 线程执行结束则countDown,倒数一次
countDownLatch.countDown();
});
i--;
}
// 等待所有线程都countDown,倒数完毕,结束线程
countDownLatch.await();
System.out.println("=====多线程结束=====");
}
本次是使用CompletableFuture对象的runAsync()方法直接创建子线程。
而CountDownLatch 对象是用于阻塞主线程,如果没有的话,代码会在子线程还未执行结束时就开始执行下面的逻辑
本站主要用于日常笔记的记录和生活日志。本站不保证所有内容信息可靠!(大多数文章属于搬运!)如有版权问题,请联系我立即删除:“abcdsjx@126.com”。
QQ: 1164453243
邮箱: abcdsjx@126.com