如何在 finally 块开始执行之前 return 尝试 java 中的块值?
How to return try block value in java even before finally block start executing?
我在 java 中有代码片段,例如
Int methodHitByAPI() {
List returnValue = doSomething();
return returnValue;
finishProcess(returnValue);
}
我的疑问是我想执行 doSomething()(此方法被 UI 的 post api 调用击中)然后 return 响应立即执行 finishProcess() 。 finishProcess() 是一个非常大的进程,前端不能等到它完成(HTTP 超时)。但是这里要注意一点,前端执行doSomething()就够了,和finishProcess(returnValue)没有任何关系;那么我如何才能快速将响应发送到 UI 而不会出现 finishProcess(returnValue); 的任何问题?执行 finishProcess(returnValue) 是后端必须的,但对前端没有任何作用
我试过这个
try {
returnValue = doSomething();
return returnValue;
}
finally {
finishProcess(returnValue);
}
但仍然
return returnValue;
仅在finishProcess(returnValue)之后执行;
解决这个问题的方法是什么?
注意 :我们可能会将 return 值发送到前端并调用另一个 APi 调用 finishProcess()。但事实并非如此
也许异步方法适合这里,例如...
ExecutorService executor = Executors.newFixedThreadPool(10);
public List methodHitByAPI() {
List returnValue = doSomething();
executor.submit(()->finishProcess(returnValue));
return returnValue;
}
returnValue 将立即返回,但 finishProcess 将在单独的线程中执行。
我在 java 中有代码片段,例如
Int methodHitByAPI() {
List returnValue = doSomething();
return returnValue;
finishProcess(returnValue);
}
我的疑问是我想执行 doSomething()(此方法被 UI 的 post api 调用击中)然后 return 响应立即执行 finishProcess() 。 finishProcess() 是一个非常大的进程,前端不能等到它完成(HTTP 超时)。但是这里要注意一点,前端执行doSomething()就够了,和finishProcess(returnValue)没有任何关系;那么我如何才能快速将响应发送到 UI 而不会出现 finishProcess(returnValue); 的任何问题?执行 finishProcess(returnValue) 是后端必须的,但对前端没有任何作用
我试过这个
try {
returnValue = doSomething();
return returnValue;
}
finally {
finishProcess(returnValue);
}
但仍然
return returnValue;
仅在finishProcess(returnValue)之后执行;
解决这个问题的方法是什么?
注意 :我们可能会将 return 值发送到前端并调用另一个 APi 调用 finishProcess()。但事实并非如此
也许异步方法适合这里,例如...
ExecutorService executor = Executors.newFixedThreadPool(10);
public List methodHitByAPI() {
List returnValue = doSomething();
executor.submit(()->finishProcess(returnValue));
return returnValue;
}
returnValue 将立即返回,但 finishProcess 将在单独的线程中执行。