使用Eclipse Job执行异步线程的处理

   最近在项目开发过程中,需要通过后台处理大量的业务数据,而在UI界面发出查询命令到后台返回查询结果需要时间,特别是这些数据又需要从数据库或者远程网络获取,通常情况下UI界面会一直等待查询方法执行完了才会进行响应,在这个过程中看起来界面好像死了一样,给用户的体验是非常的差,如果我们能通过一个进度条显示当前的进度,就算做一个假的进度显示也好,可以打发用户无聊的时间嘛,这时候我们就要考虑使用多线程了。

  值得高兴的是我们使用Eclipse开发项目的话,可以使用Eclipse提供的多线程支持,在RCP中要在非UI线程中执行UI线程的操作,最简单的方式就是display.syncExec或者display.asyncExec,一个是同步处理一个是异步处理,如果UI线程所需的时间较长的话,则应该使用display.asyncExec,可以让程序并发允许。

 在这里推荐使用Job这个类,而不是Java中的Thread,为什么?先列出它的好处来:

  我们可以在它的run方法中执行比较消耗时间的方法,而且可以将它转入到后台允许,可以不打扰现在的操作,不过这个方法唯一的缺点是不能访问UI线程,可惜,如果我们要访问UI线程的话就要使用UIJob这个类了,其实UIJob是Job的一个子类,这个方法就可以访问UI线程了,不过这个方法在执行的时候意味着我们的程序不会再响应界面操作,也不会刷新,这样,用户会觉得我们的程序象死了一样没有反应。

  • Job是可重用的工作单元,一个Job我们可以很方便的让它多次执行。
  • Job提供了方便的接口,使得我们在处理中能够很方便的与外界交流,报告当前的执行进度
  • Eclipse提供了相应的机制使得程序员可以方便的介入Job的调度,例如我们可以方便的实现每次只有一个同一类型的Job在运行
  • Eclipse缺省提供了Job管理的程序,可以查看当前所有的Job和它们的进度,也提供UI终止、暂停、继续指定的Job
  • 使用Job可以提高程序的性能,节省线程创建和销毁的开销。Eclipse中的Job封装了线程池的实现。当我们启动一个Job时,Eclipse不会马上新建一个Thread,它会在它的线程池中寻找是否有空闲的线程,如果有空闲线程,就会直接用空
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值