Eclipse客户端程序中多线程的使用 - 编程入门网
行。简单的我们可以通过下面的代码实现 。我们先定义一个如下rule:
对于需要避免同时运行的Job,我们可以将它们的rule设成上面定义的rule。如:
这样对于myjob1和myjob2这两个Job,它们不会再同时执行。Myjob2会等待myjob1执行完再执行。这是 由Eclipse的JobManager来提供实现的。JobManager可以保证所有启动的Job中,任意两个Job的rule是没 有冲突的。我们在上面定义的rule是最简单的。我们可以重写isConflicting函数来实现一些更加复杂的 控制,比如控制同时同类型的Job最多只有指定的个数在运行。但是我们要注意,isConflicting方法不能 过于复杂。一旦一个Job的rule与其他Job的rule有冲突,isConflicting方法会调用很多次。如果其中的 计算过于复杂,会影响整体的性能。 根据需要执行Job 由于我们有的Job有可能不是立即执行的,在有些情况下,等到该Job准备执行的时候,该Job所要执行 的任务已经没有意义了。这时,我们可以使用Job的shouldSchedule()和shouldRun()来避免Job的运 行。在我们定义一个Job时,我们可以重载shouldSchedule和shouldRun方法。在这些方法中,我们可以检 查Job运行的一些先决条件,如果这些条件不满足,我们就可以返回false。JobManager在安排Job运行时 ,它会先调用该Job的shouldSchedule方法,如果返回为false,JobManager就不会再安排这个Job运行了 。同样,JobManager在真正启动一个线程运行一个Job前,它会调用该Job的shouldRun方法,如果返回 false,它不再运行这个Job。在下面的例子中,我们希望启动一个Job在十秒钟之后更新文本框中的内容 。为了保证我们的Job运行时是有意义的,我们需要确保我们要更新的文本框没有被销毁,我们重载了 shouldSchedule和shouldRun方法。
Eclipse客户端程序中多线程的使用(4)时间:2011-08-11 IBM 梁 骞在UI线程中涉及长时间处理的任务 我们经常碰到这样一种情况:用户操作菜单或者按钮会触发查询大量数据,数据查询完后更新表格等 界面元素。用户点击菜单或者按钮所触发的处理程序一般处于UI线程,为了避免阻塞UI,我们必须把数据 查询等费时的工作放到单独的Job中执行,一旦数据查询完毕,我们又必须更新界面,这时我们又需要使 用UI线程进行处理。下面是处理这种情况的示例代码:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |