如果新线程已启动,则JSF操作方法无法完成

时间:2017-12-09 22:13:47

标签: jsf concurrency

我希望commandButton调用托管bean中的一个方法,该方法将异步处理某些内容(new Thread),然后请求应立即完成,而不必等待新的Thread完成。我希望这个异步代码能够在需要时执行,与用户会话无关。

但是请求没有完成并且一直在等待线程完成,我不明白为什么。我在这里弄错了吗?

XHTML:

<p:commandButton 
    value="Update" 
    id="updateButtonId" 
    styleClass="internalButton" 
    action="#{myBean.processUpdate}"
    onstart="PF('loading').show()" 
    oncomplete="PF('loading').hide()"
    update="myDataTableId" />

豆:

@ManagedBean(name="myBean")
@ViewScoped
public class MyBean {
    ...
    public void processUpdate(){

        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                //do something...           
            }
        });
        thread.start();
    }
}

0 个答案:

没有答案