DeferredResult
DeferredResult 是 Spring MVC 提供的一种异步处理机制。两个线程可以完全不知道对方的存在
callable
副线程是由主线程调起来的。
超时处理
DeferredResult 允许你设置超时时间,并在超时后执行特定的操作。你可以通过以下方式设置超时时间:
DeferredResult<String> deferredResult = new DeferredResult<>(5000L, "请求超时!");
在这个示例中,我们设置了 5 秒的超时时间。如果在 5 秒内没有完成任务,DeferredResult 将返回 “请求超时!”。
自定义超时处理逻辑
你还可以自定义超时处理逻辑:
deferredResult.onTimeout(() -> {
deferredResult.setErrorResult("自定义超时处理逻辑!");
});
异常处理
同样地,你可以自定义异常处理逻辑:
deferredResult.onError((Throwable t) -> {
deferredResult.setErrorResult("自定义异常处理逻辑:" + t.getMessage());
});
完成处理
当请求完成时,可以执行一些清理操作:
deferredResult.onCompletion(() -> {
// 清理操作
System.out.println("请求处理完成!");
});