java - 以优化方式批量下载图片

标签 java swing executorservice

<分区>

我有一个网站说 somthing.com 是用 spring MVC 开发的,还有一个客户端桌面应用程序是用 Swing Java 开发的。我想从服务器 URL 下载批量图像。

somthing.com/resourse/webfiles/imgs/1.jpg
somthing.com/resourse/webfiles/imgs/2.jpg
somthing.com/resourse/webfiles/imgs/3.jpg
...
somthing.com/resourse/webfiles/imgs/n.jpg

出于测试目的,我在多台 PC 上安装了客户端,并给了服务器命中但平均。下载 1800 imgs/PC 需要 20 分钟。

有没有更快的方法来做到这一点?

当前代码/登录步骤是...(很抱歉没有给出实际代码...)

  • 请求图像 URL。
  • 在输出流中获取响应。
  • 然后获取字节并循环将其写入物理位置的图像。

最佳答案

如果您有权访问服务器,只需将文件复制到 USB 拇指驱动器,然后将它们复制到每台电脑。这可能会快得多。

实际上,我假设您的方法是客户端 pc 和服务器之间的带宽限制,而不是您的代码。

可能,它可以帮助进行一些多线程处理。但我认为如果网络带宽达到极限,这不会将吞吐量增加几个百分点以上。

您可以通过此计算快速检查是否有任何改进潜力:您的连接带宽是多少,与 20 分钟内传输的总字节数相比如何?为简单起见,我将计算 10 位到 1 字节的实际传输数据,以处理协议(protocol)开销。

关于java - 以优化方式批量下载图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18411049/

相关文章:

java - 如果执行程序服务的可调用项之一遇到错误,如何在控制台中记录错误

java - 如何根据命令行参数加载 Spring 配置?

java - 打开弹出窗口后是否有一种简单的方法可以进行上下文特定的导航

java - 如何使用 Action 监听器从按钮获取背景颜色

java - fireTableStructureChanged 后如何在 JTable 中维护用户指定的表行排序?

java - 如何设置优先鼠标监听器

c# - 使用 JNA 在 Windows 资源管理器中获取选定的文件项

java - Redis数据检索

java - Java 中的线程池执行器

java - 如何运行多个 ExecutorServices 来发出请求并通过单个接口(interface)汇集响应?