簡體   English   中英

並行文件下載到Java中的USB記憶棒

[英]Parallel file download to USB stick in Java

我正在運行在USB記憶棒上的Java應用程序。 它將多個文件從服務器下載到存儲棒並解密。 每個文件都在其自己的線程中處理。 由於我以前的實現中存在錯誤,線程數量沒有限制,當文件數量足夠大時,導致某些文件最終以0 KB大小結尾(在我們的測試中,我們有26個小文件,每個文件數KB) 。 分析表明,在這種情況下下載失敗,即解密無關,因為文件為空。 在這種情況下,典型的失敗下載次數為6。沒有記錄異常。 我還直接在計算機上運行了應用程序,並在計算機上下載了文件,對整個過程進行了測試,但是在這種情況下(使用Windows 7和SSD驅動器)從未出現問題。

切換到具有10個線程的固定線程池后,問題似乎消失了。 但是,我想確定問題將來不會再次出現,但是我確實想保留線程池,因為它明顯加快了整個過程的速度。 問題是:如何確保我沒有使用太多線程? 該實現應該可以在USB 2.0和3.0記憶棒上使用。

26個線程不是很多。 如果26個線程中有6個未能完成任務,則您的程序中肯定有錯誤。 但是您和我們都不知道該錯誤是什么,因此我們不能肯定地說該錯誤是否會在10個線程中顯示。 最糟糕的是,沒有診斷程序。 您應該修復您的初始程序,在所有位置插入診斷,查找錯誤,然后修復它。 之后,請考慮線程池的大小,看看它是否對總下載時間有影響。 很有可能3個或更多線程比2個線程沒有優勢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM