【问题标题】:Parallel file download to USB stick in Java用Java并行文件下载到USB记忆棒
【发布时间】:2017-01-19 15:46:12
【问题描述】:

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

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

【问题讨论】:

    标签: java multithreading threadpool usb-drive


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-26
      • 2018-07-05
      • 2023-03-17
      • 2018-10-20
      相关资源
      最近更新 更多