位置: 编程技术 - 正文

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 需要输入文本时调不出来软键盘 解决方案(亲测有效)

  • 所得税费用税前扣除项目
  • 中国的税收制度是什么
  • 个人车卖给公司能抵税吗
  • 普票冲红原票要退回吗
  • 个体小规模一般纳税人税率多少
  • 没有借贷资质的公司对外放款
  • 企业合并有几种
  • 外贸企业出口采购流程
  • 变更注册资本的股东会决议范本
  • 4s店买车首付能付一成吗
  • 银行代扣出口快递费用
  • 当年应收账款无明细科目
  • 企业收到政府补助要交税吗
  • 电子承兑汇票没开通能接受吗
  • 医疗器械销售初次拜访话术
  • 接受实物投资的增值税会计核算方法
  • 工商年报单位缴费基数从哪看
  • 工程预算调整的主要内容
  • 企业暂估收入申报,未开发票,几年以后要开票如何处理
  • 暂估应付款借方
  • 现金存入银行是付款还是转账
  • 期间费用企业所得税扣除
  • 到期一次还本付息的利息怎么算
  • 预缴增值税抵扣销项税额账务处理
  • 华为鸿蒙系统如何刷机
  • 输入法自定义按键位置
  • 利润的计算公式excel
  • 在win7中,如何搜索指定扩展名的文件
  • php在apache中有哪些工作方式
  • 如何更改文件的创建时间
  • php session实例
  • 加权平均数的代码
  • php教程全集
  • php实现执行外部操作
  • php修改ip地址
  • 出租车发票能不能多开
  • 补交之前年度税款怎么调账
  • 公路修路步骤
  • 异地预缴的附加税在申报税时会抵消掉么
  • 收到电子银行承兑汇票计入什么科目
  • 考试费开什么发票税目
  • mybatis执行过程,原理
  • 织梦系统基本参数
  • 发放工资的转账支票收款人
  • 小型企业需要给员工买社保吗
  • 未达到起征点的增值税会计处理
  • 防洪费需要计提吗
  • 计提和发放工资的会计科目
  • 年底没有取得发票企业所得税
  • 溢价发行可转换债券 利息调整在贷方吗
  • 收到公司的钱写收据
  • 全资子公司的账户是什么
  • 上个月库存没用完的下个月怎么计算
  • 小规模纳税人减按1%政策
  • 发票税率如何填写
  • win8pe无法识别硬盘
  • window怎么操作
  • centos更新命令
  • centos6.10修改主机名
  • centos7如何设置ssh免密登陆
  • windows个性化设置在哪里
  • 这张图告诉我们什么道理
  • kdeskcore.exe是什么
  • 使用无线网络上网电脑的IP地址会改变吗
  • opengl做简单的模型
  • nodejs 模块
  • 全网最全的小说阅读器
  • 最基本的实现进程是
  • python多进程编程
  • jquery绑定onchange
  • jquerychange事件
  • python 基础教程第三版 怎么样
  • JavaScript jquery及AJAX小结
  • android PopupWindow显示位置设置
  • python jsonp
  • 游戏客服怎么跟客户聊天
  • 置顶是怎么弄的
  • 企业代扣代缴个人所得税怎么算
  • 辽宁社保网上申报流程图
  • 税务有问题会罚多少钱?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设