- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Http多线程下载与断点续传分析??? 找了很多天的工作,真是找得有点郁闷,也就惰了下来!发现现在的简历真是不值钱。上次面试的时候本来投的是“高级程序员”职位,笔试也笔试,面试也面了。本来还是信心满满的. 不过后来在谈到薪水的时候,被贬到了初级程序员,给的高级程序员标准我还达不到,中级程序员的标准也需要一定条件--中级证书,郁闷的是我也没有!最后被定位为初级程序员!还真是有点打击人。??? 不过我到现在也不知道初中高级程序员的标准究竟在哪里,平时总是尽量让自己提高,也很少去考滤到证书的重要性!总之最后就是泡汤了??? 好了,口水就吐到这里吧,转入正题!投简历归投简历,剩余时间总是喜欢做一点自己喜欢做的事。??? 有时候发现最快乐的事就是静静的听着音乐,敲着代码,写一些东西与朋友一起分享,一起研究。??? 上次的 - “Mp3在线搜索工具”还有很多可以改进的地方,也得到一些朋友的建议,非常感谢。这个版本中加入了断点续传的功能,使用了XML文件保存任务列表及状态信息,并且支持多线程分段下载, 提高下载速度,在这一个版本中,我把它叫做: JLoading 因为我还想不出一个更好听一点或更酷一些的名字,而且我还想让他可以下载一些其它文件。程序不想做大,但想做得极致一些,比如从速度上。欢迎交流学习, huliqing(huliqing@)Jloading完整程序下载Jloading源码下载(仅供学习研究使用,有任何问题请与本人联系)协议针对于Http,先谈一下简单原理。因为代码太多,在这里只取重点分析。??? 如果你对http协议比较了解,那么你应该已经知道原理了,只要在请求头中加入以下代码就可以只请求部分数据: Content-Range: bytes 20000-40000/47000 ,即从第20000字节请求到第40000个字节,(文件长度是47000字节).知道了这一点之后,请求数据就非常容易了,只要利用Java中的URL,先探测数据的长度,然后再将这个长度分片段进行多段程下载就可以了,以下是我的实现方式:
??? ??? //?对文件进行分块????????try?{????????????totalBytes?=?new?URL(url).openConnection().getContentLength();????????????if?(totalBytes?==?-1)?state?=?STATE_NONE;????????}?catch?(IOException?ioe)?{????????????return;????????}????????//?创建分块,并创建相应的负责下载的线程????????long?pieceSize?=?(long)?Math.ceil((double)?totalBytes?/?(double)?threads);????????long?pStart?=?0;????????long?pEnd?=?0;????????tasksAll.clear();????????tasks.clear();????????for?(int?i?=?0;?i??threads;?i++)?{????????????if?(i?==?0)?{????????????????pStart?=?pieceSize?*?i;????????????}????????????if?(i?==?threads?-?1)?{????????????????pEnd?=?totalBytes;????????????}?else?{????????????????pEnd?=?pStart?+?pieceSize;????????????}????????????Piece?piece?=?new?Piece(pStart,?pStart,?pEnd);????????????tasksAll.add(piece);????????????tasks.add(piece);????????????pStart?=?pEnd?+?1;????????}
? 程序根据线程数目划分成相应的分片信息(Piece)并放入任务列表中,由线程池中的线程去负责下载,每个线程负责一个片段(Piece),当线程下载完自己的分片之后并不立即消毁,而是到任务队列中继续获取任务,若任务池为空,则将自己放入空闲池中并等待新任务,其他线程在发现有空闲线程时,则将自己所负责的任务分片再进行切割,并放入到任务队列中,同时唤醒空闲线程帮助下载,这样不会出现懒惰线程,也可以实现动态增删线程的功能,注意的是一些线程同步的问题。
public?vo
您可能关注的文档
- 《Windows 2000网络基础教程与上机指导》第4章:Windows 2000域和组织单元管理.ppt
- 《Windows 2000网络基础教程与上机指导》第5章:Windows 2000用户管理.ppt
- 《Windows 2000网络基础教程与上机指导》第6章:Windows 2000组管理及组策略.ppt
- 《Windows 2000网络基础教程与上机指导》第7章:Windows 2000磁盘管理.ppt
- 《Windows 2000网络基础教程与上机指导》第10章:Windows 2000的DHCP服务.ppt
- 《Windows 2000网络基础教程与上机指导》第11章:Windows 2000的DNS服务.ppt
- 《Windows 2000网络基础教程与上机指导》第13章:Windows 2000的FTP服务.ppt
- 《毕业实训》课程授课与技能考核体系.doc
- 《管理信息系统课程设计》任务书.doc
- 《精益推进者道场标杆学习之旅》2012.10.15-21(7天6夜).doc
最近下载
- 淘宝店铺运营方案ppt.pptx VIP
- 大学英语四级写作ppt课件-课程.ppt VIP
- 【人教七年级上册数学情境课堂课件】 3.1.3 反比例关系 课件.pptx VIP
- 2025-2026部编人教版三年级语文上册(全册)测试卷(附答案).pdf VIP
- 骨质疏松健康宣教ppt(完整版).pptx VIP
- 陕2022TJ067厨卫装配式钢丝网混凝土排气道系统建筑构造图集.docx VIP
- 八大危险作业票八大危险作业票.doc VIP
- DB53T684.10-2015 昭通乌天麻 第10部分:初加工技术规程.pdf VIP
- (含答案)福建省宁德市福鼎县2019-2020学年八年级上学期期中物理试题(质量检测).pdf VIP
- 什么叫电击和电伤.pptx
文档评论(0)