当前位置: 首页 > 知识库问答 >
问题:

java - Java多线程问题请教,如何快速处理完1000多次接口请求?

干高歌
2023-07-13

第三方系统提供的接口不支持批量接收数据, 只能一笔一笔的调用,我们有1000多条数据,就得请求1000次这个接口, 效率很是低下! 所以我想利用多线程的方式快速的调用完这1000次接口请求并处理响应, 请问我的这个思路有问题吗? 应该怎么实现呢? 这肯定要用线程池来搞吧?

共有1个答案

华甫
2023-07-13
import java.util.concurrent.*;

public class Main {
    public static void main(String[] args) {
      
        ExecutorService executor = Executors.newFixedThreadPool(10);


        List<Data> dataList = getDataList();


        for (Data data : dataList) {
            executor.submit(() -> {
                // 请求
                sendRequest(data);
            });
        }

        // 关闭线程池,等待所有任务完成
        executor.shutdown();
        try {
            // 设置最大等待时间
            if (!executor.awaitTermination(1, TimeUnit.HOURS)) {
                executor.shutdownNow();
            }
        } catch (InterruptedException e) {
            executor.shutdownNow();
        }
    }

    private static void sendRequest(Data data) {
        // 发送请求
    }

    private static List<Data> getDataList() {
        
        return new ArrayList<>();
    }
}
 类似资料:
  • 问题内容: Java如何确定分配线程或进程的内核?有什么办法可以控制吗?防止两个大线程在同一内核上执行? 基本上,我要问的是有关Java中多线程如何工作或如何在Java中控制它的更多信息。 问题答案: 您不能为特定线程设置处理器关联。但是,如果将程序分为两个进程,则应该能够将这些进程分配给操作系统级别的特定处理器。 http://www.cyberciti.biz/tips/setting-pro

  • 1):单线程应用程序只会在用户的CPU上使用1个线程吗?提供更多的线程会使用多个CPU内核吗?如果声明的线程比用户的CPU多,会发生什么?

  • 问题内容: 根据python的GIL,我们不能在CPU绑定的进程中使用线程,所以我的问题是Apache Spark如何在多核环境中利用python? 问题答案: 多线程python问题与Apache Spark内部结构分开。Spark上的并行性在JVM内部处理。 原因是在Python驱动程序中,使用Py4J启动JVM并创建JavaSparkContext。 Py4J仅在驱动程序上用于Python和

  • 如图所示, 位置 2 和位置3 为什么可以访问 位置1 (也就是主线程)的 point 局部变量 ? 毕竟 位置 2 和位置3 是另外两个线程啊 !! 当我加上 第10行代码后,thread1 和 thead2 中都不能访问主线程中的point 了。我知道这是内部类的“事实最终变量” 的限制。 如下图所示,就是我不理解的地方。(在 “栈内存” 层面) 我的猜测:之所以 thread1 和 trea

  • Java 是面向对象语言。这门语言其实相当年轻,于1995年才出现,由Sun公司出品。James Gosling领导了Java的项目小组。该项目的最初只想为家电设计一门容易移植的语言。

  • Java是面向对象语言。这门语言其实相当年轻,于1995年才出现,由Sun公司出品。James Gosling领导了Java的项目小组。该项目的最初只想为家电设计一门容易移植的语言。然而,在获得了Netscape浏览器支持后,Java快速推广,应用广泛。 Java受到C和C++的强烈影响。Java与C++相近,都是静态类型,但移除了C++中容易出错的一些特征,比如指针和多重继承。Java的垃圾回收