如何通过Java多线程实现高效长尾词关键词下载?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3060个文字,预计阅读时间需要13分钟。
为什么要多线程下载?以终为始,我们首先明确多线程下载的目标是更快地下载文件。那么问题是,多线程下载相比单线程下载是否真的更快?
为什么要多线程下载俗话说要以终为始,那么我们首先要明确多线程下载的目标是什么,不外乎是为了更快的下载文件。那么问题来了,多线程下载文件相比于单线程是不是更快?
对于这个问题可以看下图。
横坐标是线程数,纵坐标是使用对应线程数下载对应文件时花费的时间,蓝橙绿代表下载文件的大小,每个线程下载对应文件20次,根据对应数据绘制了上图。
可以看出在忽略个别网络波动出现的突出点后,整体的趋势是线程数量的提升对下载速度没有多大影响。根据上述图片可以得出的结论是,单线程下载就够了,还需要多线程下载干嘛?既没有提升还增加麻烦。
根据目前测试结果来看这个结论是没有问题的。那我们试着在分析下问题,想一想此时为什么多线程下载没有作用?可以看下橙色线条下载文件为55M左右,下载时间平均在5s左右,平均下载速度大概为11M左右,还有绿色线条文件大概224M,下载速度平均为20s,平均下载速度大概在11M左右。而我本地网络是100M宽带,实际下行速率的上限是12.5M,可以看出下载速度已经逼近下行峰值。此时无论是单个线程还是多个线程都可以将下载带宽跑满,那么即使是开多个线程也不能把本地带宽提高,你也不能把本地100M带宽变成300M,所以这里使用多线程进行下载速度基本不可能提升了,除非我换宽带加到300M或更大。这里可以看出是本地带宽限制了下载速度。
由此我们可以得出结论,下载速度由本地带宽决定,本地带宽已经跑满的情况下,下载速度无法进行提升,这个也比较符合我们的正常逻辑,网速不够怎么办,换更大的带宽,速度自然提升,当然也意味着交更多的钱....。
本文共计3060个文字,预计阅读时间需要13分钟。
为什么要多线程下载?以终为始,我们首先明确多线程下载的目标是更快地下载文件。那么问题是,多线程下载相比单线程下载是否真的更快?
为什么要多线程下载俗话说要以终为始,那么我们首先要明确多线程下载的目标是什么,不外乎是为了更快的下载文件。那么问题来了,多线程下载文件相比于单线程是不是更快?
对于这个问题可以看下图。
横坐标是线程数,纵坐标是使用对应线程数下载对应文件时花费的时间,蓝橙绿代表下载文件的大小,每个线程下载对应文件20次,根据对应数据绘制了上图。
可以看出在忽略个别网络波动出现的突出点后,整体的趋势是线程数量的提升对下载速度没有多大影响。根据上述图片可以得出的结论是,单线程下载就够了,还需要多线程下载干嘛?既没有提升还增加麻烦。
根据目前测试结果来看这个结论是没有问题的。那我们试着在分析下问题,想一想此时为什么多线程下载没有作用?可以看下橙色线条下载文件为55M左右,下载时间平均在5s左右,平均下载速度大概为11M左右,还有绿色线条文件大概224M,下载速度平均为20s,平均下载速度大概在11M左右。而我本地网络是100M宽带,实际下行速率的上限是12.5M,可以看出下载速度已经逼近下行峰值。此时无论是单个线程还是多个线程都可以将下载带宽跑满,那么即使是开多个线程也不能把本地带宽提高,你也不能把本地100M带宽变成300M,所以这里使用多线程进行下载速度基本不可能提升了,除非我换宽带加到300M或更大。这里可以看出是本地带宽限制了下载速度。
由此我们可以得出结论,下载速度由本地带宽决定,本地带宽已经跑满的情况下,下载速度无法进行提升,这个也比较符合我们的正常逻辑,网速不够怎么办,换更大的带宽,速度自然提升,当然也意味着交更多的钱....。

