2010-01-01 87 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