2010-01-01 42 views
1

我使用amazons s3 web服务将文件上传到s3。创建多个线程上传到s3

每个文件大约需要1秒,是否有一种方法可以启动多个线程并行执行此操作?

说我有,做上传调用的方法:

公共无效uploadToS3(字符串文件名);

我该如何打电话给3个线程,每个线程都打这个电话?

+3

如果每个文件只需要一秒,那么可能是初始化开销为f或者与上传时间相比,ftp连接非常高。为什么不尝试批量处理所有文件(比如说压缩文件)并上传一次? – Chii 2010-01-01 23:22:57

+0

是否使用HTTP,FTP或其他方式完全上传? – skaffman 2010-01-01 23:43:33

+0

其使用亚马逊api的网络服务电话 – mrblah 2010-01-02 01:05:09

回答

6

总结你的函数在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(); 
    } 
} 

[编辑:,上面当然只是解决你的“如何”的问题,可能与改善上传的目标完全不相关;)]

+0

完美的是我想学习的感谢! – mrblah 2010-01-02 01:06:40