我有一个java代码片段,像
Int methodHitByAPI() {
List returnValue = doSomething();
return returnValue;
finishProcess(returnValue);
}
我的怀疑是,我想执行doSomething()(这个方法被一个post api调用从UI),然后立即返回响应,然后执行finishProcess()。finishProcess()是一个非常大的进程,前端不能等到它完成(HTTP超时)。但这里需要注意的一点是,前端执行doSomething()就足够了,它没有finishProcess(returnValue)的工作;所以我怎么能发送响应UI快速没有finishProcess(returnValue)的任何问题;执行finishProcess(returnValue)是必须在后端,但没有工作与前端
I had try this
try {
returnValue = doSomething();
return returnValue;
}
finally {
finishProcess(returnValue);
}
,但仍
return returnValue;
只在finishProcess(returnValue)之后执行;
这个问题的解决方案是什么?
注意我们可以将返回值发送给前端,并调用另一个APi调用finishProcess()。但事实并非如此
也许一个异步的方法是合适的,像…
ExecutorService executor = Executors.newFixedThreadPool(10);
public List methodHitByAPI() {
List returnValue = doSomething();
executor.submit(()->finishProcess(returnValue));
return returnValue;
}
returnValue将立即返回,但finishProcess将在一个单独的线程中执行。