【发布时间】:2017-04-06 20:15:01
【问题描述】:
我有这个请求端点:
@PostMapping("/verify")
public Callable<String> verify() {
logger.debug("----STARTED REQUEST-----");
Callable<String> callable = () -> {
Thread.sleep(5000);
logger.debug("_____FINISHED REQUEST_____");
return "foo";
};
logger.debug("FREED CONTROLLER");
return callable;
}
它返回一个Callable 对象,它会休眠 5 秒。
我的目标:当我有多个传入请求时,我希望它们被异步处理。
我的意思是,当第一个请求到来并且我返回一个可调用对象时,控制器应该在等待的同时处理下一个请求。但相反,它等待可调用对象完成,然后才处理下一个请求。这是日志。
[nio-8080-exec-1] c.t.c.lol.task.TaskLolController : ----STARTED REQUEST-----
[nio-8080-exec-1] c.t.c.lol.task.TaskLolController : FREED CONTROLLER
[ MvcAsync1] c.t.c.lol.task.TaskLolController : _____FINISHED REQUEST_____
[nio-8080-exec-3] c.t.c.lol.task.TaskLolController : ----STARTED REQUEST-----
[nio-8080-exec-3] c.t.c.lol.task.TaskLolController : FREED CONTROLLER
[ MvcAsync2] c.t.c.lol.task.TaskLolController : _____FINISHED REQUEST_____
[nio-8080-exec-5] c.t.c.lol.task.TaskLolController : ----STARTED REQUEST-----
[nio-8080-exec-5] c.t.c.lol.task.TaskLolController : FREED CONTROLLER
[ MvcAsync3] c.t.c.lol.task.TaskLolController : _____FINISHED REQUEST_____
我想要什么:
----STARTED REQUEST-----
FREED CONTROLLER
----STARTED REQUEST-----
FREED CONTROLLER
----STARTED REQUEST-----
FREED CONTROLLER
_____FINISHED REQUEST_____
_____FINISHED REQUEST_____
_____FINISHED REQUEST_____
我怎样才能做到这一点?
【问题讨论】:
-
请提供您的 MVC 配置。
标签: java spring multithreading