[英]Spring Boot @Async method in controller is executing synchronously
[英]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.