基于Java多线程的下载器源码剖析文库

基于Java多线程的下载器源码剖析文库

ID:47655687

大小:400.79 KB

页数:28页

时间:2019-10-17

基于Java多线程的下载器源码剖析文库_第1页
基于Java多线程的下载器源码剖析文库_第2页
基于Java多线程的下载器源码剖析文库_第3页
基于Java多线程的下载器源码剖析文库_第4页
基于Java多线程的下载器源码剖析文库_第5页
资源描述:

《基于Java多线程的下载器源码剖析文库》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于Java多线程的下载器源码剖析(一)分类:Java多线程2012-04-2821:29747人阅读评论(6)收藏举报多线#呈iavadownloadbytefileexception目录⑵[±]本文实现了一个基于Java多线程的下载器,可提供的功能有:1.对文件使用多线程下载,并显示每时刻的下载速度。2.对多个下载进行管理,包括线程调度,内存管理等。这篇文章的结构如门首先讨论如何实现利用Java多线程对单个文件进行卜•载。然后讨论当系统中有多个文件下载,如何对这些下载进行管理。包括线程调度,内存管理等。-:单个文件下载的管理1

2、.单文件下载类层次首先简要介绍一下单个文件下载管理的类层次:来一张图来表不。Download保存文件File•为需要下载的文件创建一个Download类,Download负责管理该文件下载时的线程管理、文件管理、当前速度计算等操作。•根据线程的数HtNum,将该文件分为tNum段,每段为一个DownloadBlocku在实际下载的过程屮,并不是一次把所有的东西下载完,而是每次下载固定size的一段Di。所以每个DownloadBlock乂会分成n段。•为每个DownloadBlock申请一个线程DownloadThreado其主要

3、作用就是每次下载一段Di,并将其写入到文件中。1.单文件下载对于单个下载,步骤如下•连接资源服务器,获取资源信息,创建文件•切分资源,为每个线程分配固定的下载区域。1)封装下载的属性在建立下载Z前,我们把每一次下载进行抽彖封装。首先把URL、目标文件等封装在一个DownloadConfig类屮。其屮包含了4个属性:[java]viewplaincopy•privateURLurl;//文件下载地址•privateFilefile;//卜■载文件保存Fl标文件•privateintnthread;//卜谶该文件需要的线程数•priv

4、ateintpriority;//该卜墩的优先级如下如所示:2)连接资源服务器,获取资源信息,创建文件,并指定文件大小[java]viewDlaincoov•length=config.getUrl().openConnection().getContentLength();•RandomAccessFilefile=newRandomAccessFile(config.getFile(),"rw");•file.setLength(length);•file.close();2)切分资源,为每个线程分配固定的下载区域,并将当前的

5、下载加入到队列中[java]viewplaincopy•intsize=length/config.getNthread();•for(inti=0;i

6、步骤如下:1•创建缓存,创建连接。设置获取资源数据的范围,创建文件,并设置写入位置[java]viewplaincopy•//创建缓存•byte[]b;•if(block.getLength()

7、operty(''Range,,bytes="+block.getStart()++block.getStart()+block•getLength()-1);•RandomAccessFilefile=newRandomAccessFile(block.getDownload().getConfig().getFile(),"rw");//创建RandomAccessFile•file,seek(block.getStart());//从startPos开始写入2.如果当前block的length大于0,则从URL资源处获取固定

8、大小的资源,并将其写入到文件中。3•更新block块的start,以及length,如果length大于0,继续进行2,否则则表示当前block已经下载完毕,退出该线程。[java]viewDlaincoov•InputStreamin二block

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。