簡體   English   中英

如何在 Spring Boot Service 中同時運行多個長任務方法?

[英]How to run multiple long task method in the same time in Spring Boot Service?

這是我的問題,我創建了一個服務 class 處理從 output 文件夾上傳文件到雲。 在這個output文件夾內,觸發時會產生大量文件。

下面是我的 class 的服務。

     @Service
     Public class uploadService {
         
         public void UploadAllFile(String processCode) {

             if (processCode = "allfile") {

          1      //no need check generate status, start to upload while files generating
                 //keep upload files while generate process ongoing, until finish generate.
                 uploadPDF();

                  
          2      //check other type of files generate status, wait all finish just start upload.
                 ReadFileGenerateLog;
                 if (log.contain("txt") == "all finish generate") {
                       uploadTxt();
                 }
                 if (log.contain("xml") == "all finish generate") {
                       uploadXml();
                 }
             }
         }


         public void UploadPDF(){

         }

         public void UploadTxt(){

         }

         public void UploadXml(){

         }
     }

現在的問題是需要生成和上傳幾百個 PDF 文件,完成整個過程需要 1 小時 smtg(上傳時仍然生成直到完成)。 而其他類型的文件在 10 分鍾內完成(等到完成生成和上傳)。

所以根據我的代碼邏輯,不可能等待 [1] function 完成然后開始 [2] function。 無論如何,我可以同時運行兩個邏輯而不是等待第一個邏輯完成嗎? 請教我解決這個問題。

ExecutorService executor = Executors.newFixedThreadPool(10);

for(int i = 0; i < FILE_COUNT; i++) {
   executor.submit(() -> {
      uploadPDF(i)
   })
}

只需使用 ExecutorService 管理多線程上傳 PDF。 你也可以得到結果如果你調查https://www.baeldung.com/java-executor-service-tutorial

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM