是否应使用多线程下载大量图像?

时间:2013-11-03 06:53:25

标签: java multithreading download

我想下载几张图片(最少100,000张)。我有这些图片的网址。

我应该使用多线程来下载这些图像吗?这会带来什么重大好处吗?

我有一个文本文件,其中包含这些100,1000张图片的网址。我在想我会制作100个帖子并为每个帖子分配1000个网址。

这有助于我更快地下载内容吗?在那个注意事项上,何时适合使用多线程?

1 个答案:

答案 0 :(得分:2)

我认为在您计划使用多线程时,您的下载速度会快得多。这是因为在下载过程中存在资源(CPU,网络等)未使用的短暂延迟。其他线程可以填补这些空白,以充分利用您的资源。请注意,在您的情况下,瓶颈可能是您下载的服务器。如果是单个,那么它可能会限制每个客户端的并发下载数。您可能希望改变线程数以找出最佳值。

从资源使用时间差距的角度来看,多线程通常适用于导致所有(小心“瓶颈”)资源使用延迟涉及时间多路复用资源(CPU,网络)的过程,硬盘等)。但是,多线程是以

为代价的
  • 额外的资源管理,如果使用太多线程,将过度补偿好处,即任何给定的资源设置都有最佳的加速。

  • 线程安全编程的额外复杂性 - 并最终防止资源暂时过度使用(“交通拥堵”)。由于这种复杂性的增加,如果您将多线程视为优化,那么只有在必要时才使用它。记住“过早优化是万恶之源。” - Donald Knuth