gpt4 book ai didi

java - 如何在服务 HTTP 请求并发送回客户端后启动后台线程?

转载 作者:行者123 更新时间:2023-11-28 23:45:46 24 4
gpt4 key购买 nike

我有一个 Vaadin 应用程序,我正在实现一些异步后台处理。据我所知,来自客户端的所有请求都由 Tomcat 线程池中的一个线程处理,并且在处理请求后,响应(更新的应用程序状态)返回给客户端并呈现。

因为我有一些任务想在后台执行,所以我需要在主 HTTP 线程中显示“正在加载...”标签,显示后我需要启动一个后台线程来执行任务以及何时它完成后,应用程序的状态被推送到客户端(使用 ICEPush 插件)。

问题是,在我看来,有时后台线程会在主 HTTP 线程将响应返回给客户端之前完成,因此不会显示“正在加载...”标签,有时应用程序的状态不会完全更新客户因此。因此,我需要在主 HTTP 线程返回响应后启动后台线程。

有办法吗?还是我对这种方法完全错了?

谢谢!

最佳答案

据我了解,在线程中更新 UI 必须与锁定机制一起完成。这是一个例子:

class Calculation implements Runnable {

private long result = 0;

private final Label label;

public Calculation(Label label) {
this.label = label;
}

@Override
public void run() {
// calculate or fetch the result (here is the time consuming operation)
getSession().getLockInstance().lock();
try {
// inform UI about result
label.setValue("Result is: " + result);
} finally {
getSession().getLockInstance().unlock();
}
}
}

关于java - 如何在服务 HTTP 请求并发送回客户端后启动后台线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14622990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com