简介:本文分析了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的实现和使用方面的问题。