快速业务通道

Eclipse客户端程序中多线程的使用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

Eclipse客户端程序中多线程的使用

时间:2011-08-11 IBM 梁 骞

简介:本文分析了Eclipse中多线程程序的实现,讨论了在Eclipse客户端程序开发中应用多线程的方 法和要注意的问题,同时也讨论了多线程程序的一些调试和问题解决的方法。

Eclipse作为一个开发平台,使用越来越广泛,基于Eclipse Rich Client Platform开发的客户端程序 也越来越多。在当今越来越复杂的应用环境中,我们的客户端程序不可避免的要同时进行多任务的处理。 一个优异的客户端程序都会允许用户同时启动多个任务,从而大大提高用户的工作效率以及用户体验。本 文中我们来谈谈Eclipse中实现多任务的方式。

在我们基于Eclipse的Java程序中,我们有很多种方式提供多任务的实现。熟悉Java的朋友立即会想到 Java的Thread类,这是Java中使用最多的一个实现多任务的类。Eclipse平台为多任务处理提供了自己的 API,那就是Job以及UIJob。Eclipse中的Job是对Java Thread的一个封装,为我们实现多任务提供了更方 便的接口。以下是Job的基本用法:

清单 1. Job用法示例

Job job = new Job(“Job Name”){ protected IStatus run(IProgressMonitor monitor) {      // 在这里添加你的任务代码      return Status.OK_STATUS;    } }; job.schedule(delayTime);

在Eclipse中我们也会经常用到Display.asynchExec() 和Display.synchExec()来启动任务的执行。这 两个方法主要为了方便我们完成界面操作的任务。以下是Display.asynchExec()的用法, Display.synchExec()和它类似。

清单 2. Display.synchExec()用法示例

Display.getDefault().asyncExec(new Runnable() { public void run() {    // 在这里添加你的任务代码      }    });

通常,在Eclipse中我们最好使用Eclipse提供的Job接口来实现多任务,而不是使用Java的thread。为 什么呢?主要有以下几个原因:

Job是可重用的工作单元,一个Job我们可以很方便的让它多次执行。

Job提供了方便的接口,使得我们在处理中能够很方便的与外界交流,报告当前的执行进度

Eclipse提供了相应的机制使得程序员可以方便的介入Job的调度,例如我们可以方便的实现每次只有 一个同一类型的Job在运行

Eclipse缺省提供了Job管理的程序,可以查看当前所有的Job和它们的进度,也提供UI终止、暂停、继 续指定的Job

使用Job可以提高程序的性能,节省线程创建和销毁的开销。Eclipse中的Job封装了线程池的实现。当 我们启动一个Job时,Eclipse不会马上新建一个Thread,它会在它的线程池中寻找是否有空闲的线程,如 果有空闲线程,就会直接用空闲线程运行你的Job。一个Job终止时,它所对应的线程也不会立即终止,它 会被返回到线程池中以备重复利用。这样,我们可以节省创建和销毁线程的开销

下面我们从几个方面来讨论Eclipse中Job的实现和使用方面的问题。

Eclipse客户端程序中多线程的使用(2)

时间:2011-08-11 IBM 梁 骞

Eclipse中Job的实现

Eclipse的核心包中提供了一个JobManager类,它实现了IJobManager接口,Eclipse中Job的管理和调 度都是由JobManager来实现的。 JobManager维护有一个线程池,用来运行Job。当我们调用Job的 schedule方法后,这个Job会被JobManager首先放到一个Job运行的等待队列中去。之后,JobManager会通 知线程池有新的Job加入了运行等待队列。线程池会找出一个空闲的线程来运行Job,如果没有空闲线程, 线程池会创建一个新的线程来运行Job。一旦Job运行完毕,运行Job的线程会返回到线程池中以备下次使 用。从上面Job运行的过程我们可以看到,JobManager介入了一个Job运行的全过程,它了解Job什么时候 开始,什么时候结束,每一时候Job的运行状态。JobManager

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号