多线程下载速度反而更慢

安卓机器人 2012-04-01 08:56:32
我做是手机项目,尝试下载20M的文件,在wifi的网络环境下,单线程花的时间是5分18秒,双线程花的时间是6分46秒。
可能多线程时间会更长,请问是这是为什么?有什么方法可以提高下载速度吗?
...全文
395 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
原来缘来 2012-04-05
  • 打赏
  • 举报
回复
换个双核手机试试
shift3325 2012-04-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

预先填充的话说白了就是先占坑。第一次 HTTP 请求时通过 Content-Length 获取资源的大小,预先创建一个这样大小的文件,先全部填充为字节 0

如果开启 5 个线程,文件大小是 1000 的话,那么 0~999 字节使用线程 1 通过 Range 去下载,1000~1999 字节依次类推。线程 1 从该文件 0 位置开始写入,线程 2 从该文件 1000 处开始写入。
[/Quote]
++
安卓机器人 2012-04-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
预先填充的话说白了就是先占坑。第一次 HTTP 请求时通过 Content-Length 获取资源的大小,预先创建一个这样大小的文件,先全部填充为字节 0

如果开启 5 个线程,文件大小是 1000 的话,那么 0~999 字节使用线程 1 通过 Range 去下载,1000~1999 字节依次类推。线程 1 从该文件 0 位置开始写入,线程 2 从该文件 1000 处开始写入。
[/Quote]
对,我用的就是这种方式。
  • 打赏
  • 举报
回复
预先填充的话说白了就是先占坑。第一次 HTTP 请求时通过 Content-Length 获取资源的大小,预先创建一个这样大小的文件,先全部填充为字节 0

如果开启 5 个线程,文件大小是 1000 的话,那么 0~999 字节使用线程 1 通过 Range 去下载,1000~1999 字节依次类推。线程 1 从该文件 0 位置开始写入,线程 2 从该文件 1000 处开始写入。
  • 打赏
  • 举报
回复
不预先填充的话,那用多个线程下回来的每一块数据怎么拼起来呢?
安卓机器人 2012-04-01
  • 打赏
  • 举报
回复
继续顶一个,谢谢楼上两位大侠的热心。
安卓机器人 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
你多线程下载时采用的什么方式?预先文件填充数据么?有使用 Range 么?

你好像什么都没说,无能为力!
[/Quote]
有使用Rangle,不清楚预先文件填充方式是什么,我用的是Java的HttpURLConnection,而不是apache的HttpPost方法。
  • 打赏
  • 举报
回复
你多线程下载时采用的什么方式?预先文件填充数据么?有使用 Range 么?

你好像什么都没说,无能为力!
  • 打赏
  • 举报
回复
也没差太多啊?
龙四 2012-04-01
  • 打赏
  • 举报
回复
1、网速有没有达到瓶颈
2、手机是不是多核,系统对多任务的支持度

安卓机器人 2012-04-01
  • 打赏
  • 举报
回复
自己顶一个,环境大家积极讨论问题。

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧