繁体   English   中英

我如何有1个UI线程等待另一个UI线程

[英]How do I have 1 UI thread wait for another UI thread

我有两个UI线程。 我要确保第一个完成运行,然后再运行另一个。 我该怎么办? 非常感谢!

UIJob uiJob = new UIJob("settext1") {
    public IStatus runInUIThread(IProgressMonitor ipm) {
        webBrowser.setText(finalContent);
        return Status.OK_STATUS;
    }
};
uiJob.schedule();

UIJob uiJob2 = new UIJob("settext2") {
    public IStatus runInUIThread(IProgressMonitor ipm) {
        webBrowser.execute(executeMoreFunction);
        return Status.OK_STATUS;
    }
};
uiJob2.schedule();

Eclipse SDK帮助

UIJob是通过asyncExec在UI线程内运行的Job。

它只是一个UI线程,两个UIJob :s不能彼此等待,它将创建死锁。

schedule之后调用join方法。

等待直到该作业完成。 该方法将阻塞调用线程,直到作业完成执行或该线程被中断为止。 如果尚未安排作业,则此方法将立即返回。 不得在作业的运行方法范围内加入作业。 如果在从run方法内部重新计划自身的作业上调用了此方法,则联接将在第一次执行结束时返回。 换句话说,join将在此作业第一次退出RUNNING状态时返回,或者在此作业进入NONE状态时立即返回。 如果在作业管理器挂起时调用此方法,则仅在该作业已经运行时才加入该作业; 如果此作业正在等待或睡眠,则此方法立即返回。 请注意,使用联接时存在死锁风险。 如果调用线程拥有联接线程正在等待的锁或对象监视器,则会发生死锁。

了解更多: http : //kickjava.com/src/org/eclipse/core/runtime/jobs/Job.java.htm#ixzz0qWh6Ahhe

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM