我有一个在 java 开发中存在多年的传统问题,但无法决定什么是最好的方法。所以需要你的建议来选择最好的。问题如下 -
客户端 - Java 程序(基本上是基于 Web 的应用程序)
服务器 - 用 C 编写
要求 - 用户将上传一个可能包含一百万条记录或例如 50000 条记录的文件。每条记录(行)都有一个序列号、产品名称和客户名称。我的 java 程序应该读取文件并通过网络向 C 应用程序发送请求。此 C 服务器应用程序将使用请求 ID 进行响应,并且在 java(客户端)中,我需要将此请求 ID 存储在同步的列表中,并应查询回 C 服务器应用程序以找出之前发送的请求 ID 的状态. 服务器响应请求 ID 的 WIP(正在进行的工作)或 DONE(已完成)。如果 C 服务器应用程序响应 = DONE,服务器将连同响应一起发送一些数据,如果它的 WIP,客户端应该以 5 秒的间隔重试 3 次。
代码设计 -
第 1 步 - 逐行读取文件
第 2 步 - 读取该行后,启动一个线程,该线程将向服务器发送请求并将响应存储到同步数组列表中。
第 3 步 - 另一个线程将读取同步列表并开始查询请求状态并存储来自 C 服务器应用程序的最终响应。
这可能会产生内存开销,因为您可以看到如果文件包含 100000 条记录,它可能会创建 100000 个线程。你们能建议我一个更好的方法来处理这个问题吗?
谢谢,西里什。