目录
一、题目要求
序号 | 功能名称 | 功能需求标识 | 简要描述 |
1 | 下载功能 | Download | 当用户输入一个下载链接后,能识别链接并开始多线程下载工作,包括线程监听、线程管理等。 |
2 | 续传功能 | Pause | 提供一个简单的续传功能,当用户因为某种原因暂停了下载任务,下次能够从断点继续下载,不必从头开始。 |
3 | 数据显示 | Data display | 显示当前文件已下载的时间,和大约完成全部下载所需剩余时间及当前下载速率。 |
4 | 删除功能 | Delete | 删除当前任务,释放系统资源 |
5 | 分块组装 | Divide Rebuild | 根据下载资源大小启动适当进程进行下载,然后将各线程所下载的块组装在一起成完整的目标文件。 |
在下载软件中应用多线程技术可以理解为将一个下载任务分成若干份来完成,可以提高CPU 和带宽的利用率,其中的并发控制将使下载的效率大大提高,从而提高下载速度。在下载过程中可能会出现很多的意外情况使下载中断或停止,为避免当用户重新下载资源时发现原来下载的数据已经消失而要重新开始的问题,使用断点续传来解决该问题。断点续传的任务是在下载任务停止时,记录当前下载的信息并且利用网络协议中的一些重定向机制继续完成下载任务而不必从头再来。系统的需求可以总结为:
1)支持多线程下载
2)支持多任务下载
3)支持断点续传
4)有一个易操作的可视化界面
5)采用JAVA语言开发
二、效果展示
主窗口设计
对输入数据的检测
下载任务窗口
新建下载/继续下载
多任务下载(主窗口运行时状态[左],下载任务窗口运行时状态[右,2个])
暂停
三、功能实现
下载线程:每个下载线程都记录着下载地址(URL)、保存地址、初始下载地址、结束下载地址、输入输出流、线程是否运行标志、已经下载字节数等信息,当运行下载线程后,这个线程将读取相应范围内的数据并写入文件中。
多任务下载:封装任务类,每个任务类中记录着下载地址(URL)、保存地址、下载线程数组、监控线程、下载的对话框、是否时断点续传、线程数量、每个线程已经下载的字节数(当断点续传时)、文件长度、是否正在下载等信息,每次新建下载任务都会初始化一个任务对象,然后这个对象运行下载线程和监控线程。
下载任务监控线程:每个下载任务中都包括一个监控和线程,监控和线程每隔一秒会检查每个下载线程的下载情况,并实时计算出下载的完成百分比、已下载的大小、下载速度、已下载时间、预计下载剩余时间等信息,并实时显示在对话框上。
主监控线程:与下载任务监控线程相似,主监控线程是监控所有的下载任务,并实时计算出所有任务下载的完成百分比、已下载的大小、下载速度、已下载时间、预计下载剩余时间等信息,并实时显示在对话框上。
新建任务:输入下载地址,输入下载线程数量,点击新建任务选择保存文件地址,在点击开始,就会弹出下载任务的对话框,从而创建一个下载任务。
暂停任务:点击暂停任务后,将文件下载地址、保存地址、线程数量、每个线程已经下载的字节数保存到文件(.cfg)中,然后结束下载任务。
继续下载:点击继续下载,弹出对话框选择相应的.cfg文件,点击开始,创建下载任务。
继续:在下载任务窗口点击暂停后,可点击继续按钮继续下载。
删除:当点击叉号时会删除当前任务、释放系统资源。
四、代码
【免费】Java多线程下载器,多线程,多任务,断点续传资源-CSDN文库https://download.csdn.net/download/m0_71534259/89447747