位置: 编程技术 - 正文

Android多线程断点下载之多线程下载原理(android 多线程并发)

编辑:rootadmin
1.为什么要使用多线程下载?使用多线程下载文件可以更快完成文件的下载,多线程下载文件之所以快,是因为其抢占的服务器资源多,例如:假设服务器同时最多服务个用户,在服务器中一条线程对应一个用户,条线程在计算机中并非并发执行,而是由cpu划分时间片轮流执行,如果A应用使用了条线程下载文件,那么相当于占用个用户资源,假设一秒内cpu分配给每条线程的平均时间是ms,A应用在服务器中一秒内就得到了ms的执行时间,而其他应用在一秒只有ms的执行时间,就如同一个水龙头,每秒出水量相等的情况下,放水毫秒的水.肯定比放毫秒的水要多.2.多线程下载的实现过程:1)首先得到下载文件的长度,然后设置到本地文件HttpURLConnection.getContentLength();RandomAccessFile file = new RandomAccessFile("vedio1.avi","nw");file.setLength(filesize);//设置文件的长度2)根据文件长度和线程数计算每条线程下载的数据长度和下载位置.如,文件长度为6M,线程为3个,那么每条线程下载的数据为2M.每条线程开始下载的位置如下:int blocksize = length / threadcount 即:6M / 3Thread = 2M/Thread线程1 下载2个byte: 0*blocksize ~ 1*locaksize-1线程2 下载2个byte: 1*blocksize ~ 2*blocksize-1线程3 下载2个byte: 2*blocksize ~ length-)使用Http协议的Range头字段指定每条线程从文件的什么位置开始下载,下载到什么位置为止,例如指定HttpURLConnection.setRequestProperty("Range","bytes=-");4)保存文件,使用RandomAccessFile类指定每条线程从本地文件的什么位置开始写入数据RandomAccessFile threadFile = new RandomAccessFile("video1.avi","nw");

推荐整理分享Android多线程断点下载之多线程下载原理(android 多线程并发),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android 多线程,android多线程处理,android多线程面试题,android 多线程,android多线程下载以及断点下载,android多线程编程,android 多线程并发,android 多线程并发,内容如对您有帮助,希望把文章链接给更多的朋友!

threadfile.seek(); //从文件的什么位置开始写入数据

下图为原理图:

准备工作:

搭建Tomcat服务器,放置需要下载的资源,如下图所示的video1.avi

确认资源文件的大小为,,byte

Android多线程断点下载之多线程下载原理(android 多线程并发)

开始编写代码了.以下代码都是j2se的知识,因此可以直接创建一个j2se的工程来演示

运行结果如下:

刷新工程目录,可以发现刚刚下载的temp.avi文件

打开工程的根目录,确认下载的文件大小是否和服务器上的文件大小一致

android EditText 需要输入文本时调不出来软键盘 解决方案(亲测有效) 1、进入程序界面后点击Setting(设置)按钮:2、往下拉,找到Languageinput选择,点击进去后,进行设置3、勾选谷歌拼音输入法4、点击Default选项,将Hardwar

eclipse 不同工程中文乱码问题(可对文件以及工程单独设置) 随机百度到的都是讲全局设置eclipse编码式,尝试后发现对单个文件就可以设置了,现分享如下1、文件编码可单独设置,右键点属性properties(快捷键alten

【ExpandableListView】ExpandableListView互斥展开效果 ExpandableListView有很多项,展开一项则另一个展开的项关闭,就像两个项互斥。每次只能有一个项目是展开的。重载onGroupExpand函数,做一下控制就好了,

标签: android 多线程并发

本文链接地址:https://www.jiuchutong.com/biancheng/374462.html 转载请保留说明!

上一篇:android中动态添加组件(android动态添加fragment)

下一篇:android EditText 需要输入文本时调不出来软键盘 解决方案(亲测有效)

  • 其他负债是流动负债还是非流动负债
  • 软件和硬件如何集合使用
  • 资金什么情况下退出企业
  • 服务费发票的税率是多少
  • 以公司名义买50万的车可以省多少钱
  • 存货盘盈如何处理
  • 业务提成模版
  • 有营业执照有什么好处吗?
  • 可以不用附原始凭证的记账凭证是
  • 酒店应不应该为员工提供澡堂
  • 供货方提供安装材料
  • 捐赠支出和赞助支出的区别
  • 社保费工商退费金额如何做会计分录呢?
  • 福利费发票可以开个人抬头吗
  • 工程用油计入什么科目
  • 库存商品进行非货币资产交换收入怎么确定
  • 购置税交了发票能作废吗
  • 一般企业和行政事业单位的资产负债表是否一样
  • 企业重组中撤资所得税有哪些处理规则?
  • 个人所得税0申报操作流程
  • 汽车折旧年限与什么有关
  • 员工报销医药费计入什么费用
  • 虚假享受税收优惠政策
  • 企业所得税申报表在哪里打印
  • 发票红冲需要用发票打印吗
  • 小规模纳税人附加税会计分录
  • 京挑客怎么赚钱
  • 销售原材料结转会计分录
  • 企业收入代扣税金应该怎么做会计处理?
  • 期末结转生产成本会计分录
  • 人人有份类似的词语
  • 个税三险一金指什么意思
  • 无法设置面容id怎么办
  • 现在还有票据法吗
  • beservice是什么进程
  • 会计计量属性的是
  • Chrome谷歌浏览器网页
  • vue实战开发项目视频
  • 电票怎么付给别人
  • 企业一次性收取租金如何缴纳增值税
  • aws documentation
  • 2021所得税季报怎么填
  • 研发费用的范围和加计扣除比例
  • 企业现金支付的范围
  • 查看php
  • 终止合约要赔钱吗
  • 预收款方式销售货物的会计分录
  • 固定资产清理借方表示什么意思
  • 可供出售交易性金融资产申报表怎么填
  • 小规模结转成本怎么计算
  • 其他货币资金科目主要指
  • 医保账户收入金额是怎么算的
  • 免征增值税进项税怎么弄
  • 营业收入和营业总收入一样吗
  • 公对公转账必须签合同吗
  • 久期缺口计算公式解析
  • sql server无法连接服务器的原因
  • mysql修改版本号
  • win7鼠标点了没反应
  • win7系统桌面设置
  • win8提升模式
  • Mac显示桌面快捷键
  • win10升级win1
  • win7电脑启动
  • nodejs中的事件循环的执行顺序
  • bash 删除文件夹
  • win10如何使用命令
  • 简述javascript中的函数
  • bootstrap与Jquery UI 按钮样式冲突的解决办法
  • jquery模拟回车
  • linux shell实战
  • onSaveInstanceState和onRestoreInstanceState触发的时机
  • jquery选择器总结
  • python的读取和写入
  • android 蓝牙数据传输
  • js实现跨域访问的几种方式
  • 设置家的地址
  • 个人所得税其他公司在为我发放工资
  • 国税总局网
  • 深圳监狱在哪个位置
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设