我有这个帖子方法:
@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来通知解析是否完成。可以帮我提一些提示。
答案 0 :(得分:1)
此处future.get()
是阻止者。
您可以使用Java 8 CompletableFuture:
CompletableFuture.supplyAsync(() -> {
try{
Thread.sleep(5000);
return "done";
}catch(Exception ex){}
}).thenApply((res->)->{
return res;
});
它不会阻止你的控制。