Java多线程下载工具,多线程,多任务,断点续传,GUI

目录

一、题目要求 

二、效果展示

三、功能实现

四、代码


一、题目要求 

序号

功能名称

功能需求标识

简要描述

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文库icon-default.png?t=N7T8https://download.csdn.net/download/m0_71534259/89447747

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/29266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MMpose安装实例

摘要: 这个大数据训练发展较快,各种版本问题,不太好匹配,仅是安装就会大费周章。本文图文并茂的描述了一种成功的安装方式。仅供参考。 使用的win版本是win11,英伟达显卡是GeForce GTX 1660 SUPER。 1.cuda版本选择 通…

浏览器f12控制台怎么获取vue实例,并且修改data数据

我们在日常的生产工作中,经常会遇到一些问题,比如,若产品已经部署,或是目前无法查看源代码,或者向用命令直接修改查询默认表单数据,那我们怎么去查看Vue实例呢? 我们在浏览器直接打印this不能得…

基于JSP技术的弹幕视频网站系统

开头语 你好,你好呀,我是计算机学长猫哥!如果有相关需求,可以通过文末的联系方式找到我。 开发语言 JSP 数据库 MySQL 技术 JSP JavaBeans 工具 MyEclipse、Tomcat、Navicat 系统展示 首页 用户登录界面 视频信息界面…

《跟我一起学“网络安全”》——等保风评加固应急响应

等保风评加固应急响应 一、安全加固 背景 随着IP技术的飞速发展,一个组织的信息系统经常会面临内部和外部威胁的风险,网络安全已经成为影响信息系统的关键问题。 虽然传统的防火墙等各类安全产品能提供外围的安全防护,但并不能真正彻底的消…

新闻稿标题怎么写吸引人?建议收藏

一个好的标题,不仅能激发读者的好奇心,还能引导他们继续深入了解文章内容。本文伯乐网络传媒将为你揭秘新闻稿标题写作的十大技巧,让你轻松写出吸引人的标题。 1. 激发好奇心 a. 提出疑问:以问句的形式提出问题,让读者…

C# Winform图形绘制

WinForms 应用程序中的控件是基于窗体的,当控件需要重绘时,它会向父窗体发送一个消息请求重绘。但是,控件本身并不直接处理绘制命令,所以你不能直接在控件上绘制图形。 解决方法: 重写控件的OnPaint方法使用CreateGr…

推荐3款轻量的window工具,免费好用

Rufus Rufus是一个制作U盘启动的工具,可以将window和linux操作系统制作成U盘启动,方便安装系统。 DesktopOK DesktopOK是一个电脑桌面图标备份工具,支持备份多个时间节点的桌面信息。一旦你的电脑桌面由于游戏或者其他软件导致你的桌面变得乱…

5.华为交换机局域网vlan网段隔离配置

目的:PC1与PC2互通 与PC3隔离 LSW1配置 [Huawei]vlan batch 10 20 [Huawei]int g0/0/1 [Huawei-GigabitEthernet0/0/1]port link-type access [Huawei-GigabitEthernet0/0/1]port default vlan 10 [Huawei-GigabitEthernet0/0/1]int g0/0/2 [Huawei-GigabitEthernet0/0/2]port…

C#调用OpenCvSharp和SkiaSharp绘制图像直方图

最近在B站上学习OpenCv教程,学到图像直方图,后者描述的是不同色彩在整幅图像中所占的比例(统计不同色彩在图像中的出现次数),可以对灰度图、彩色图等计算并绘制图像直方图。本文学习OpenCvSharp中与计算直方图相关的函…

PS插件创成式填充功能全面测评:轻松实现AI修图新高度

大家好,我是你们的AIGC测评博主。今天,我将为大家带来一款ps插件创成式填充功能——深度体验 在图像处理领域,AI技术的应用已经越来越广泛。而创成式填充功能,无疑是其中的佼佼者。它利用AI技术,能够根据用户输入的关…

数据库系统概论(个人笔记)(第四部分)

数据库系统概论(个人笔记) 文章目录 数据库系统概论(个人笔记)4、中间的SQL4.1 连接表达式4.2 视图4.3 事务4.4 完整性约束4.5 SQL数据类型和模式4.6 SQL中的索引定义4.7 授权 4、中间的SQL 4.1 连接表达式 Join Expressions Join…

使用mysqldump导出mysql数据库的数据

使用mysqldump导出mysql数据库的数据 mysqldump是mysql自带的一个工具,路径一般是C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe 有点需要导出的数据库,选择导入/导出,选择用mysqldump导出 在使用 IntelliJ IDEA 通过 mysqldum…

车载ADAS面试题,零基础也能看得懂!

周一来刷刷ADAS相关的面试题吧!相信看完这些题目,你会对ADAS有个更清晰的认识,即使你是零基础也可以轻松明白! 1、描述 ADAS 系统的基本组成和功能 答案:高级驾驶辅助系统(ADAS)是一套融合了多种…

Mathtype插入word,以及mathtype在word上的卸载

1.Mathtype插入word 花了两个小时,最终得出的极品简单的安装方法!!!!! mathype下载地址:https://store.wiris.com/zh/products/mathtype/download/windows 下载完傻瓜式安装,不要…

CAD二次开发(9)- CAD中对象的实时选择

1. 点的拾取 有时候我们需要在CAD画布上实时选取起始点和结束点,然后绘制出来一条直线。实现如下: public void getPoint(){var doc Application.DocumentManager.MdiActiveDocument;var editor doc.Editor;var docDatabase doc.Database;PromptPoi…

手写操作系统

对喜欢操作系统的伙伴强推一门课程 从0开始实现了支持文件系统、任务切换和网络协议栈的操作系统。 具体见 :http://www.ziyuanwang.online/977.html

三星(中国)投资公司线上入职测评笔试邀请数字推理语言逻辑真题题库

三星(中国)有限公司北京分公司 邀请您参加 SHL线上笔试 具体安排如下: 笔试时间:周三 9:00 笔试时长:1.5h ~ 2h 笔试内容及要求:数字推理限时30min;语言逻辑限时30min;性格测试不…

重学java 72.正则表达式

人长大之后就在频繁地离别,相聚反而时日无多 —— 24.6.17 一、正则表达式的概念及演示 1.概述 正则表达式是一个具有特殊规则的字符串 2.作用:校验 3.String中有一个校验正则的方法: boolean matches(String regex) —— 校验字符串是否…

【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【10】【仓库管理】【分布式基础篇总结】

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【10】【仓库管理】【分布式基础篇总结】 采购简要流程采购单采购人员的接口分布式基础篇总结参考 采购简要流程 采购单 可以搞个枚举: public class WareConstant {public enu…

Langchain-chatchat: Langchain基本概念

一、Langchain的chain是指的是什么? langchain字面意思是长长的链子,那么chains 链子具体指的是什么呢? 智普AI助手的回答如下: LangChain 中的 “chain” 是指链式操作或者序列化操作,它是一种将多个任务或操作按照…