Java 下載限速


  公司產品軟件版本下載限於阿里雲服務器帶寬的限制,時長出現一個下載占滿帶寬的問題。所以在服務端下載程序中加入限速設置

  

 1 long downLoadSize = 0l; //每個單位時間內下載大小
 2 long speedLastDownloadSize = 0l;//限速結束后文件已下載大小,用於判斷下一個單位時間內已下載文件大小
3 long transferSpeed = Long.parseLong(SystemConfig.systemVariables.getOrDefault("transferSpeed", String.valueOf(bsize * 200)));//200kb/s 規定下載速度 4 long speedLimitTime = 1000l;//單位時間 毫秒 5 long speedLimitLasttime = System.currentTimeMillis();//下載開始時間,每次限速等待結束后重置為當前時間,用於判斷開始時間和單位時間下載大小超出時間點之間的差值,進而判斷等待時間 6 while ((n = bis.read(bytes)) != -1) { 7 out.write(bytes, 0, n); 8 //increment為每次下載的大小,downLoadSize為累計下載大小 9 downLoadSize = downLoadSize + n; 10 //限制下載速度 11 if (downLoadSize - speedLastDownloadSize >= transferSpeed) { 12 long interval = System.currentTimeMillis() - speedLimitLasttime; 13 //間隔時間小於單位時間,等待剩余的時間 14 if (interval < speedLimitTime) { 15 try { 16 Thread.sleep(speedLimitTime - interval); 17 } catch (InterruptedException e) { 18 e.printStackTrace(); 19 } 20 } 21 speedLastDownloadSize = downLoadSize; 22 speedLimitLasttime = System.currentTimeMillis(); 23 } 24 }

 

參考簡書地址:https://www.jianshu.com/p/f34a9e3843f5


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM