簡體   English   中英

Spring Boot異步控制器

[英]Spring boot async controller

我有這個張貼方法:

 @PostMapping("/upload")
        public String singleFileUpload(@RequestParam("file") MultipartFile file,RedirectAttributes redirectAttributes)
                throws IOException {
    ExecutorService service= Executors.newSingleThreadExecutor();
            Future<String> future=service.submit(new Callable<String>() {
                @Override
                public String call() throws Exception {
                    //parse file
                    Thread.sleep(5000);
                    return "done";
                }
            });
    String result=future.get();
     service.shutdown();
    return "redirect:uploadState";
    }

我想在執行器解析我的文件時將其重定向到uploadState,並且uploadState長時間輪詢ajax來通知解析是否完成。可以為我提供一些提示。

這里future.get()是阻止者。

您可以使用Java 8 CompletableFuture:

CompletableFuture.supplyAsync(() -> {
    try{
   Thread.sleep(5000);
   return "done";
 }catch(Exception ex){}
}).thenApply((res->)->{
  return res;
});

它不會阻止您的控制。

暫無
暫無

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

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