批量

2017-04-18 56 views
0

運行的Java程序中,我已經創建了一個ItelliJ IDEA其中包括一個Java項目:批量

  1. Main.java類(包含main()方法)
  2. FileOperations.java,
  3. Zipper.java,
  4. SFTPTransfer.java
  5. CleanUp.java

從2類到5在main()方法中實例化(位於Main.java中)。這個工作流程順利進行創建,壓縮並將單個文件發送到SFTP服務器。

但我想運行上面的程序(即調用main()方法)至少有一萬次以上,因爲我需要生成並運送很多文件。

這樣做的最佳方法是什麼?它可以簡單地使用某種批處理文件來實現,或者線程是更好的選擇嗎?

如果我使用線程,那麼我還不確定如何調用主要這麼多次。

+2

不是java有for循環,你可以使用嗎? – SomethingDark

+1

你可以使用線程paralelize,你有io操作,你被阻止sftp服務器你可以同時上傳多少個文件 – nachokk

+0

您好Nachokk,我沒有測量允許SFTP併發連接的數量,但感謝提問,因爲我絕對應該看看進入那個。可能是我會嘗試從當前工作流中取出傳輸部分,以便最終可以批量傳輸文件。另外,我目前正面臨着一些問題,我的線程被終止(Jason的答案中有下面的評論),如果你知道某種方式,那麼請分享。 – avi

回答

1

一種來解決問題的方法是:

  1. 移動從主方法的代碼,以在相同的類中的單獨的方法,它表示一個單一的文件
  2. 在執行的步驟的全部序列主要方法是根據需要多次調用新方法,使用任何您喜歡的構造(for循環,while循環,線程執行器等)來處理每個需要處理的文件。
+0

感謝Jason,在你的回答之後,我決定使用線程作爲執行循環中的代碼,這使得它花費很多時間,但無論出於何種原因,只有線程數量少(小於30)才能正常工作。否則由於某種原因線程被終止。從我迄今爲止的理解來看,這個程序不應該要求線程同步,因爲每個程序都是序列中的一個步驟,其執行過程不會混亂。我可以採取什麼方法來提高績效? – avi

+0

對各個代碼塊進行測量(時間戳),以便您瞭解哪些部件花費的時間最長,從而確定哪些部件可以爲您提供最佳的優化結果。 – Jason