java—如何在SpringBoot服务中同时运行多个长任务方法?

8mmmxcuj  于 2021-07-15  发布在  Java
关注(0)|答案(1)|浏览(393)

这是我的问题,我已经创建了一个服务类来处理从输出文件夹上传文件到云。在这个输出文件夹中,触发时会生成大量的文件。
下面是我的服务级别。

@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]函数完成,然后再启动[2]函数。我可以同时运行这两个逻辑,而不是等待第一个逻辑完成吗?请教我解决这个问题。

cgh8pdjw

cgh8pdjw1#

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

相关问题