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

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

时间: 2025-01-19 06:45:37

Eclipse客户端程序中多线程的使用的相关文章

在.NET客户端程序中使用多线程

通常认为在编写程序中用到多线程是一个高级的编程任务,容易发生错误.在本月的栏目中,我将在一个Windows窗体应用程序中使用多线程,它具有实际的意义,同时尽量使事情简单.我的目标是在一个普通的需求描述中用最好的办法讲解多线程:客户仍然比较喜欢使用户交互方式的应用程序. 多线程通常和服务器端软件,可扩展性及性能技术联系在一起. 然而,在微软.NET框架中,许多服务器端应用程序都驻留在ASP.NET体系结构中.同样,这些应用程序在逻辑上是单线程的, 因为IIS和ASP.NET在ASP.NET Web

集成Windows本地应用到Eclipse RCP程序中

Windows 应用程序非常丰富,而有时我们的 Eclipse RCP 程序所需要的一些功能已经有一些现有的 Windows 本地应用程序的实现,我们希望能够在我们的 RCP 程序中重用这些功能.一种最简单的重用方法就是直接在我们 RCP 窗口中嵌入本地应用程序窗口.要使得一个 Windows 本地应用程序能够在我们的 RCP 程序中运行,我们可以使用 Windows 提供的 reparent 机制.利用这种机制实现窗口嵌入的主要过程是:首先要在我们的程序中启动要嵌入的 Windows 程序,然

如客户端程序中自定义的bindatatable类,是datatable的扩展类),脚本编译失败

问题描述 应用系统开发环境:client/server模式VisualStudio2010,.netframework4.0语言c#应用了Remoting,WCF技术.数据库:mssqlserver性能测试工具:Loadrunner12,选择.net协议录制,录制选项中的filter选择新建filter(基于remoting.WCF等四项基本filter,附加客户端程序的DLL).使用loadrunner12录制应用系统的客户端软件,录制脚本中提示某些类未找到(.注释一些编译不通过的脚本,编译通

在.NET客户端程序中应用多线程

程序|多线程|客户端 目录 类与结构的实例比较 类与结构的差别 如何选择结构还是类 一.类与结构的示例比较: 结构示例: public struct Person { string Name; int height; int weight public bool overWeight() { //implement something } } 类示例: public class TestTime { int hours; int minutes; int seconds; public void

两个独立的winform程序中,如何传递form窗体界面?

问题描述 就是在客户端Winform程序中的一个form窗体,需要在Server端Winform程序中完整的展现出来,目前想到了两种方式:第一种方式:将客户端程序中的form窗体做截图,直接传递到B程序.这样做传输量太大,再者有滚动条的界面展示不出来,不好用:第二种方式:将客户端程序Form窗体中的所有控件属性(大小,位置,值等等)当作参数,传递到Server端程序,在Server端程序中重新构建界面:这样需要传递的各种元素太多,比较麻烦.请教各位高手,还有没有其他比较好的方法么? 解决方案 解

DotNetNuke Skinning Whitepaper(术语与win客户端程序部分)

翻译:术语 术语 "Skinning(皮肤)"是一个很难用语言解释清楚的东西,简单的说,一种皮肤体系提供给你一个静态的布局,但允许你修改颜色和样式甚至可以用你的图片代替原有的图片,另外一种皮肤体系则拥有允许你自定义除了内容以外的任何外观上的表现.这两种手段有着明显的区别,你需要根据你的商务需要去选择最适合你的应用程序的解决方案. Windows 客户端程序 皮肤技术在Windows客户端程序中已经流行了相当一段时间了,这或许会让你认为不需要太大努力就可以将同样的皮肤体系运用在你的web

Tcp多线程服务器和客户端程序

//服务器程序: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <sys/types.h> #include <sys/socket.h> #include <unistd.h> #define PORT 8082 #define BUFSIZE 512 char buf[BUFSIZE+

Java 程序中的多线程

程序|多线程 在Java程序中使用多线程要比在 C 或 C++ 中容易得多,这是因为 Java 编程语言提供了语言级的支持.本文通过简单的编程示例来说明 Java 程序中的多线程是多么直观.读完本文以后,用户应该能够编写简单的多线程程序. 为什么会排队等待? 下面的这个简单的 Java 程序完成四项不相关的任务.这样的程序有单个控制线程,控制在这四个任务之间线性地移动.此外,因为所需的资源 - 打印机.磁盘.数据库和显示屏 -- 由于硬件和软件的限制都有内在的潜伏时间,所以每项任务都包含

Asp.Net在Web应用程序中执行计划任务(多线程)

asp.net|web|程序|多线程|执行 在业务复杂的应用程序中,有时候会要求一个或者多个任务在一定的时间或者一定的时间间隔内计划进行,比如定时备份或同步数据库,定时发送电子邮件等,我们称之为计划任务.实现计划任务的方法也有很多,可以采用SQLAgent执行存储过程来实现,也可以采用Windows任务调度程序来实现,也可以使用Windows服务来完成我们的计划任务,这些方法都是很好的解决方案.但是,对于Web应用程序来说,这些方法实现起来并不是很简单的,主机服务提供商或者不能直接提供这样的服务