【问题标题】:How to return try block value in java even before finally block start executing?java - 即使在finally块开始执行之前,如何在java中返回try块值?
【发布时间】:2021-11-27 09:30:06
【问题描述】:

我在 java 中有代码 sn-p 之类的

Int methodHitByAPI() {
     List returnValue = doSomething();
     return returnValue;
     finishProcess(returnValue);
}

我的疑问是我想执行 doSomething() (这个方法被来自 UI 的 post api 调用命中)然后立即返回响应然后执行 finishProcess() 。 finishProcess() 是一个非常大的进程,前端不能等到它完成(HTTP 超时)。但是这里要注意一点,前端执行doSomething()就足够了,和finishProcess(returnValue);没有任何关系。那么我怎样才能快速将响应发送到 UI 而不会出现与 finishProcess(returnValue); 相关的任何问题?在后端执行finishProcess(returnValue) 是必须的,但在前端没有工作

我试过了

try {
    returnValue = doSomething();
    return returnValue;
}
finally {
     finishProcess(returnValue);
}

但还是

return returnValue;

仅在finishProcess(returnValue);后执行

解决办法是什么?

注意:我们可能会将返回值发送到前端并调用另一个 API 调用来完成进程()。但事实并非如此

【问题讨论】:

    标签: java try-catch try-catch-finally finally try-finally


    【解决方案1】:

    也许这里适合使用异步方法,例如...

    ExecutorService executor = Executors.newFixedThreadPool(10);
    public List methodHitByAPI() {
        List returnValue = doSomething();
        executor.submit(()->finishProcess(returnValue));
        return returnValue;
    }
    

    returnValue 将立即返回,但 finishProcess 将在单独的线程中执行。

    【讨论】:

      猜你喜欢
      • 2021-05-13
      • 2017-07-20
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-05
      • 2013-08-01
      • 1970-01-01
      相关资源
      最近更新 更多