gpt4 book ai didi

java - Java 中的并行文件下载到 U 盘

转载 作者:行者123 更新时间:2023-12-01 09:00:05 24 4
gpt4 key购买 nike

我正在开发一个在 USB 内存棒上运行的 Java 应用程序。它将多个文件从服务器下载到棒上并解密它们。每个文件都在其自己的线程中处理。由于我之前实现中的一个错误,线程数量不受限制,导致当文件数量足够多时,某些文件最终大小为 0 KB(在我们的测试中,我们有 26 个小文件,每个文件几 KB) 。分析表明,在这种情况下下载失败,即与解密无关,因为文件是空的。该案例中下载失败的典型次数为 6。没有记录任何异常情况。我还测试了整个过程,应用程序直接在计算机上运行,​​文件也在计算机上下载,但在这种情况下(使用 Windows 7 和 SSD 驱动器)从未出现问题。

切换到具有 10 个线程的固定线程池后,问题似乎消失了。但是,我想确保问题不会在将来的某个时候再次出现,但我确实想保留线程池,因为它明显加快了整个过程。问题是:如何确保我没有使用太多线程?该实现应该可以在 USB 2.0 和 3.0 棒上运行。

最佳答案

26 并不是一个很大的线程数。如果 26 个线程中有 6 个未能完成其工作,那么您的程序中肯定存在错误。但您和我们都不知道这个 bug 是什么,所以我们不能肯定地说这个 bug 是否会在 10 个线程上出现。最糟糕的是,没有诊断。您应该修复最初的程序,在各处插入诊断,找到错误,然后修复它。之后,调整线程池大小,看看它是否对总下载时间有影响。很可能发生的情况是,3 个或更多线程并不比 2 个线程有任何优势。

关于java - Java 中的并行文件下载到 U 盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41746032/

24 4 0