HTTP的多线程下载
多线程下载是加快下载速度的一种方式,通过开启多个线程去执行一个任务,可以使任务的执行速度变快。多线程的任务下载时常都会使用得到断点续传下载,就是我们在一次下载未结束时退出下载,第二次下载时会接着第一次下载的进度继续下载。
一、 多线程下载的步骤说明:
第一步: 我们要获得下载资源的的长度,用http请求中HttpURLConnection的getContentLength()方法
第二步:在本地创建一个文件,设计其长度。File file = new File()
第三步:根据文件长度和线程数计算每条线程下载的数据长度和下载位置。
第四步:从下载的位置下载数据,通过connection.setRequestProperty("Range", "bytes=" + start + "-" +end)方法;
第五步:保存文件,使用RandomAccessFile类指定每条线程从本地文件的什么位置开始写入数据。
【HTTP的多线程下载】二、根据文件长度和线程数计算每条线程下载的数据长度和下载位置:
如:文件的长度为6M,线程数为3,那么,每条线程下载的数据长度为2M,每条线程开始下载的位置如下图所示。
文章图片
例如10M大小,使用3个线程来下载,
线程下载的数据长度(10%3 == 0 ? 10/3:10/3+1) ,第1,2个线程下载长度是4M,第三个线程下载长度为2M
下载开始位置:线程id*每条线程下载的数据长度 = ?
下载结束位置:(线程id+1)*每条线程下载的数据长度-1=?
android中多线程中的原理说明
对于多线程的下载,有两个需要学习的知识点就是
1.connection.setRequestProperty("Range", "bytes=" + start + "-" + end)方法,它用于请求指定范围内的数据。
2.RandomAccessFile类的seek方法从指定位置开始写入数据到文件:
推荐阅读
- 桃子的第一天
- 投稿|历史转折中的电商代运营——从隐形功臣走向前台
- IT电子|失去的信心:日本消费电子崩盘启示录
- 融云 IM 即时通讯的跨应用通信能力
- 万节点规模云服务的 SRE 能力建设
- HTTP之body去哪儿了
- 如何用DockArray的子索引实现嵌套数据的搜索
- 如何应对突发的流量激增和服务器过载问题
- 钛极客|1+1>2的双筒体验,米家分区洗烘?体机15kg评测 | 钛极客
- 经济|年轻人收入不如父母退休金?警惕未富先老的软阶层社会