我正在研究他们Thread.sleep
在控制器中的旧系统。这里的场景是,一旦收到请求,它就会轮询另一个服务,直到满足条件。这里的问题是请求处理线程因为轮询而被阻塞
我正在尝试将其替换为DeferredResult
避免阻塞并使用基于回调的方法。轮询将在一个单独的线程中进行,一旦完成setResult
将被调用并向用户提供响应。
使用 DeferredResult 进行间隔轮询真的有意义吗?负载对性能有影响吗?
这是代码:
while (status.equals("RUNNING")) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
log.error("Error while polling for status setting Thread to sleep.", e);
}
status = requestStatus();
}
我试图改进的是基于这个例子