線程可以理解為下載的通道,一個(gè)線程就是一個(gè)文件的下載通道,多線程也就是同時(shí)開啟好幾個(gè)下載通道。當(dāng)服務(wù)器提供下載服務(wù)時(shí),使用下載者是共享帶寬的,在優(yōu)先級相同的情況下,總服務(wù)器會對總下載線程進(jìn)行平均分配。不難理解,如果你線程多的話,那下載的越快。
現(xiàn)流行的下載軟件都支持多線程,且支持中途暫停下載,再次開始時(shí)不會從頭開始下載。
兩種功能的實(shí)現(xiàn)步驟如下:
(1)連接到下載資源文件時(shí),首先判斷資源文件大小,同步的在本地創(chuàng)建一個(gè)大小相同的臨時(shí)文件用于存儲下載數(shù)據(jù)。
(2)根據(jù)線程數(shù)量確定每個(gè)線程所需下載的文件大小
(3)根據(jù)每個(gè)線程下載的文件大小以及線程數(shù)量,決定每個(gè)線程的開始下載位置以及結(jié)束下載位置
(4)為實(shí)現(xiàn)斷點(diǎn)下載功能,需要對每個(gè)線程實(shí)時(shí)下載的位置做標(biāo)記,方便下次開始時(shí)繼續(xù)之前進(jìn)度下載
開啟3個(gè)線程下載視圖(默認(rèn)下載目錄為java所轄項(xiàng)目):