【问题标题】:creating multiple threads to upload to s3创建多个线程以上传到 s3
【发布时间】:2010-01-01 22:54:22
【问题描述】:

我正在使用亚马逊 s3 网络服务将文件上传到 s3。

每个文件大约需要 1 秒,有没有办法可以启动多个线程来并行执行此操作?

假设我有一个执行上传调用的方法:

public void uploadToS3(字符串文件名);

我怎样才能调用 3 个线程并且每个线程都进行此调用?

【问题讨论】:

  • 如果每个文件只需要一秒钟,那么与上传时间相比,ftp 连接的初始化开销可能相当高。为什么不尝试批量处理所有文件(比如压缩成 zip)并上传一次?
  • 上传是否完全使用 HTTP、FTP 或其他方式?
  • 它是一个使用亚马逊 api 的网络服务调用

标签: java multithreading


【解决方案1】:

将您的函数包装在 Runnable 接口中

public Runnable getS3UploadTask () {
   return new Runnable() {
       public void run() {
           uploadToS3();
       }
   };
}

然后,您可以创建任意数量的线程来执行 Runnable:

public void startS3Tasks(int workerCnt) {
    for(int i=0; i<workerCnt; i++) {
       new Thread(getS3UploadTask()).start();
    }
}

[编辑:当然,以上只是解决您的“如何”问题,可能与改进上传的目标完全无关;)]

【讨论】:

    【解决方案2】:

    请阅读standard thread tutorial,或编辑您的问题以说明您需要了解的特定于 s3 的内容?

    【讨论】:

      猜你喜欢
      • 2021-11-09
      • 2012-12-24
      • 2021-09-11
      • 2018-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-22
      • 1970-01-01
      相关资源
      最近更新 更多