1. 程式人生 > >帶斷點續傳的多執行緒下載

帶斷點續傳的多執行緒下載

多執行緒下載

原理:伺服器CPU分配給每條執行緒的時間片相同,伺服器頻寬平均分配給每條執行緒,所以客戶端開啟的執行緒越多,就能搶佔到更多的伺服器資源,所以使用多執行緒下載的話,速度會更快。

JavaSE實現帶斷點續傳的多執行緒下載步驟:

1、傳送http請求至下載地址,獲取要下載的資原始檔的大小

2、根據資原始檔的大小,建立一個長度一樣的臨時檔案,用來搶佔磁碟空間

3、計算每個執行緒要下載的資料大小和開始位置、結束位置,餘數都由最後一個執行緒完成下載,所以最後一個執行緒的結束位置要寫死

4、再次傳送請求,請求要下載的資料區間的資料(判斷是否有記錄進度的臨時檔案,有的話就繼續上次位置接著下載,沒有就從原本開始位置下載)

5、將下載請求到的資料,儲存到臨時檔案中(新建一個記錄下載進度的臨時檔案)

6、等所有執行緒都下載完畢了,就要將之前的記錄進度的臨時檔案刪除掉

View Code

•Android上實現帶斷點續傳的多執行緒下載

佈局檔案:

View Code
  MainActivity:

View Code
1
2
3

多執行緒下載

原理:伺服器CPU分配給每條執行緒的時間片相同,伺服器頻寬平均分配給每條執行緒,所以客戶端開啟的執行緒越多,就能搶佔到更多的伺服器資源,所以使用多執行緒下載的話,速度會更快。

JavaSE實現帶斷點續傳的多執行緒下載步驟:

1、傳送http請求至下載地址,獲取要下載的資原始檔的大小

2、根據資原始檔的大小,建立一個長度一樣的臨時檔案,用來搶佔磁碟空間

3、計算每個執行緒要下載的資料大小和開始位置、結束位置,餘數都由最後一個執行緒完成下載,所以最後一個執行緒的結束位置要寫死

4、再次傳送請求,請求要下載的資料區間的資料(判斷是否有記錄進度的臨時檔案,有的話就繼續上次位置接著下載,沒有就從原本開始位置下載)

5、將下載請求到的資料,儲存到臨時檔案中(新建一個記錄下載進度的臨時檔案)

6、等所有執行緒都下載完畢了,就要將之前的記錄進度的臨時檔案刪除掉

View Code

•Android上實現帶斷點續傳的多執行緒下載

佈局檔案:

View Code
  MainActivity:

View Code
1
2
3

在這裡插入圖片描述

在這裡插入圖片描述