多线程下载
下载工具我想没有几个人不会用的吧,前段时间比较无聊,花了点时间用 写了个简单的 多线程下载程序,纯粹是无聊才写的,只实现了几个简
单的功能,而且也没写界面,今天正好也是一个无聊日,就拿来写篇文章,班门弄斧一下,觉得好给个掌声,不好也不要喷,谢谢!
我实现的这个 下载工具功能很简单,就是一个多线程以及一个断点恢复,当然下载是必不可少的。那么大概先整理一下要做的事情:
、e连接资源服务器,获取资源信息,创建文件
、e切分资源,多线程下载
、e断点恢复功能
、e下载速率统计
大概就这几点吧,那么首先要做的就是连接资源并获取资源信息,我这里使用了 自带的 进行资源连接,大致代码如下:
!!!"#$"% &!& '''() 资源地址,随便写的
!*+) 创建
, "*+) 建立连接
-
. "*+) 获得资源长度
/
0 12!1*2%+) 根据 2% 创建一个下载文件,也会是我们最终下载所得的文件
3
很简单吧,没错就是这么简单,第一步做完了,那么接下来要做第二步,切分资源,实现多线程。在上一步我们已经获得了资源的长度
,那么如何根据这个对资源进行切分呢?假如我们要运行十个线程,那么我们就先把 处以 3,获得每块的大小,然后在分
别创建十个线程,每个线程负责其中一块的写入,这就需要利用到 &%4##1 这个类了,这个类提供了对文件的随机访问,可以指定向文
件中的某一个位置进行写入操作,大致代码如下:
#5 &6) 获取每块的大小
创建十个线程,并启动线程
7*3)8&6)99+:
;<&&!;<&*#=9=#5>=#5>*9+?+) 创建线程
&<&#@A&)