线程可以理解为下载的通道,一个线程就是一个文件的下载通道,多线程也就是同时开启好几个下载通道。当服务器提供下载服务时,使用下载者是共享带宽的,在优先级相同的情况下,总服务器会对总下载线程进行平均分配。不难理解,如果你线程多的话,那下载的越快。
现流行的下载软件都支持多线程,且支持中途暂停下载,再次开始时不会从头开始下载。
两种功能的实现步骤如下:
(1)连接到下载资源文件时,首先判断资源文件大小,同步的在本地创建一个大小相同的临时文件用于存储下载数据。
(2)根据线程数量确定每个线程所需下载的文件大小
(3)根据每个线程下载的文件大小以及线程数量,决定每个线程的开始下载位置以及结束下载位置
(4)为实现断点下载功能,需要对每个线程实时下载的位置做标记,方便下次开始时继续之前进度下载
开启3个线程下载视图(默认下载目录为java所辖项目):
整体实现代码如下(优化空间还有很大哦,大家不要只是看看就完事喽)
1 importjava.io.BufferedReader;2 importjava.io.File;3 importjava.io.FileInputStream;4 importjava.io.InputStream;5 importjava.io.InputStreamReader;6 importjava.io.RandomAccessFile;7 importjava.net.Htt