首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在HTTP请求被服务并发回客户端后,如何启动后台线程?

在HTTP请求被服务并发回客户端后,如何启动后台线程?
EN

Stack Overflow用户
提问于 2013-01-31 17:59:36
回答 1查看 1.4K关注 0票数 0

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

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

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

有没有办法做到这一点?或者我对这种方法完全错了?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-02-02 19:28:41

据我所知,线程中的UI更新必须与锁定机制一起完成。下面是一个示例:

代码语言:javascript
运行
复制
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();
           }
     }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14622990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档