gpt4 book ai didi

java - 用于从数据库读取和更新 REST 服务器的多线程 Java 控制台应用程序

转载 作者:行者123 更新时间:2023-12-02 03:46:30 27 4
gpt4 key购买 nike

我开发了一个 Java 控制台应用程序,它执行以下操作;

  1. 从 Oracle 数据库中获取产品详细信息,例如产品 ID、名称、成本等,并将其放入 map (例如 dbMap)中 - 一个产品可以有多个记录,因为有子产品。

    <
  2. 从 REST 服务器获取类似的产品详细信息并将其存储在 map 中(例如restMap)

  3. 由于数据库具有正确的数据,因此比较两个映射 - dbMap 和 RestMap,并确定应从 REST 服务器添加、替换和删除的内容。

  4. 为此,我为每个产品创建一个 JSON 补丁请求 - 包括添加、替换、删除操作(每个产品大约数百个)并将其发送到 REST 服务器。

但是,我发现执行所有这些操作需要几分钟的时间,并且所有这些操作都以线性方式发生 - 数据库调用、其余服务器调用、比较以及最后修补到 REST 服务器。

我假设,如果我可以获取产品列表并逐个产品,每个产品在其自己的线程中并并行运行这些线程,而不是在单个线程中处理所有数据,那么它可能会更快.

因此,每个线程可能会执行以下操作 - 从数据库和 REST 服务器获取一种产品的产品详细信息,比较它们并为该产品生成补丁请求(使用添加/删除/替换操作)并将其发送到REST 服务器。

您能否建议我如何在 Java 中实现这种类型的线程架构? (似乎有几种方法,如线程池、AKKA 等,我很困惑。)

最佳答案

由于 dbCall 和 RestCall 不相互依赖,因此您可以在 2 个线程中进行并行调用。并有一个专用线程来处理比较。

您可以在此处使用生产者消费者方法。

您可以使用执行器服务来使用线程池:

http://tutorials.jenkov.com/java-util-concurrent/executorservice.html

关于java - 用于从数据库读取和更新 REST 服务器的多线程 Java 控制台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56804491/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com