c23*_*878 5 java spring asynchronous
@RequestMapping(value = "/endpoint", method = RequestMethod.POST)
public ResponseEntity<?> endpoint(@RequestBody final ObjectNode data, final HttpServletRequest request) {
somefunction();
return new ResponseEntity<>(HttpStatus.OK);
}
public somefunction() {
.....
}
Run Code Online (Sandbox Code Playgroud)
在Java spring controller中,我有一个端点.调用此端点时,我希望它直接返回,而不是等待somefunction()
完成.任何人都可以教我如何处理这个问题?
如果您使用的是Java 8,则可以使用新Executor
类:
@RequestMapping(value = "/endpoint", method = RequestMethod.POST)
public ResponseEntity<?> endpoint(@RequestBody final ObjectNode data, final HttpServletRequest request) {
Executors.newScheduledThreadPool(1).schedule(
() -> somefunction(),
10, TimeUnit.SECONDS
);
return new ResponseEntity<>(HttpStatus.ACCEPTED);
}
Run Code Online (Sandbox Code Playgroud)
这将:
somefunction()
在延迟10秒后运行. somefunction()
10秒后运行.换线
somefunction();
Run Code Online (Sandbox Code Playgroud)
成为
new Thread()
{
public void run() {
somefunction();
}
}.start();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3588 次 |
最近记录: |