【发布时间】: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