`

异步作业调度

 
阅读更多
IProgressMonitor:通过这个接口控制进度条的现实

ProgressMonitorDialog:进度对话框

IRunnableWithProgress和java的标准接口Runnable实现多线程的任务运行非常相似,只有把任务放到run方法中就可以了,最重要的是可以调用monitor来对当前进度显示进行控制。下面就是一个完整的进度条演示例子:
ProgressMonitorDialog dialog=new ProgressMonitorDialog(shell);

dialog.run(true,true,new IRunnableWithProgress(){

    public void run(IProgressMonitor monitor) throws InvocationTargetException,InterruptedException{

      final int ticks=10000;

      monitor.beginTask("Start...",ticks);

      try{

          for(int i=0;i<ticks;i++){

               if(monitor.isCanceled()){

                  throw new InterruptedException();

               }

              monitor.worked(1);

          }finally{

            monitor.done();

         }

      }

    }

});

===========================================
除了ProgressMonitorDialog外,在Eclipse中还可以通过其他方式显示进度,比如IWorkbenchWindow 通过在工作台窗口的状态行中显示进度来实现此界面,WizardDialog在向导状态行中显示长时间运行的操作。
============================================
除了自己构造进度对话框显示进度以外,我们可以调用平台的进度服务,而Eclipse也推荐使用平台的进度服务,这将使得所有的插件都有一致的进度表示。平台的进度服务定义为接口IProgressService,可以通过PlatformUI.getWorkbench().getProgressService方法来调用系统的进度服务,如下:

IProgressService progressService =PlatformUI.getWorkbench().getProgressService();

progressService.busyCursorWhile(new IRunnableWithProgress(){

   pulbic void run(IProgressMonitor monitor){

   //....

   }

});

==================================
在调用Eclipse的方法或者第三方插件的一些方法的时候,有的方法要求传递一个实现了IProgressMonitor的实例进去,如果我们无法传递或者无需传递的时候,最好不要传递null值进去,而是要传递NullProgressMonitor的一个实例进去,此类位于org.eclipse.core.runtime包下,它实现了IProgressMonitor接口,但是所有的方法都是给的空实现,传递此类就避免了被调用方法没有进行空指针判断而造成的麻烦。
=====
.....
分享到:
评论

相关推荐

    Quartz3.0定时任务学习之异步调度器.zip

    标题所提及的“Quartz3.0定时任务学习之异步调度器.zip”表明本文档围绕Quartz 3.0版本的定时任务管理功能,...通过本文档,用户将能够掌握如何在Quartz中实现高效的异步作业调度,从而优化应用程序的性能和可靠性。

    website-backend-v2:具有异步作业调度的可扩展后端,可管理一切@dsckiet

    具有异步作业调度的可扩展后端,可管理一切@dsckiet 功能 基于用户身份验证和角色的仪表板 参与者身份验证和仪表板 CRUD 事件 活动参与 活动出席 活动证书 活动反馈 电子邮件系统 团队进度/状态管理 应用...

    操作系统用三种语言编写的作业调度

    在操作系统中,作业调度是一项关键功能,它决定了如何有效地在多个任务之间分配CPU时间,以达到系统的最佳性能和响应速度。在这个主题中,我们将深入探讨用C语言、C#和VB(Visual Basic)这三种编程语言实现作业调度...

    job-scheduler:异步HTTP作业调度程序

    "job-scheduler:异步HTTP作业调度程序" 这个标题表明我们正在讨论一个专门用于作业调度的系统,它基于异步HTTP通信。这里的“作业”指的是预定义的任务或操作,而“调度程序”是管理这些任务执行时间的组件。异步...

    批处理系统中作业调度

    批处理系统中的作业调度是操作系统核心功能之一,它主要负责管理系统的资源,高效地安排大量后台作业的执行顺序。在批处理系统中,用户通常不直接与计算机交互,而是提交一组作业(例如,一系列需要执行的命令或程序...

    android模拟作业调度.rar

    3. 测试与调试:由于作业调度的异步特性,测试和调试可能较为复杂,需要模拟不同条件来验证作业的正确性。 综上所述,"android模拟作业调度.rar"可能包含了如何使用JobScheduler、JobService以及相关组件来创建和...

    Go-Workq-Go中的作业调度服务器

    在Go语言中,开发服务器应用是一项常见的任务,而"Go-Workq-Go"则是一个专为作业调度设计的服务器框架。这个框架充分利用了Go语言的并发特性,为开发者提供了高效且灵活的作业处理能力。在本文中,我们将深入探讨Go-...

    操作系统程序 作业调度

    在这个话题中,我们将深入探讨作业调度的基本概念、类型以及C#编程语言在实现作业调度中的应用。 作业调度是操作系统内核的一部分,主要目标是决定哪些作业(或进程)应该被赋予CPU执行权,以及何时切换到另一个...

    操作系统作业调度

    操作系统是计算机系统的核心组成部分,它负责管理系统的硬件资源...在C#这样的高级语言中,尽管不能直接控制底层的作业调度,但我们可以通过调整线程的优先级、合理安排任务以及利用异步编程等技术,间接影响调度效果。

    Quartz3.0定时任务学习之异步调度器https:--www.cnblogs.com-kiba-p-12794928_hy5.zip

    Quartz是一个功能强大的开源作业调度库,它提供了全面的API用于在Java应用程序中创建、管理和调度任务。随着版本的迭代更新,Quartz 3.0引入了许多新特性和改进,使得它更加易于使用和集成。在这个教程中,我们将...

    Go-Gores-基于Redis的异步作业执行系统

    `Go-Gores` 是一个用Go语言编写的高效、轻量级的异步作业执行系统,它利用了Redis作为中间件来实现任务的调度与分发。设计的目标是为分布式系统提供可靠且灵活的定时任务解决方案,支持高并发和大规模数据处理场景。...

    自己动手写开发工具--基于Eclipse的工具开发

    - **异步作业调度**:在多线程环境下,正确管理和调度任务是非常重要的。文章讨论了如何在Eclipse中实现异步作业的调度。 - **对话框的使用**:文章介绍了多种类型的对话框,包括信息提示框、值输入对话框、错误...

    linuxfest,集群

    8. **The Schwartz**:这是一种可靠的异步作业调度系统,它能够处理复杂的任务流程,并确保作业的正确执行。LiveJournal通过The Schwartz来管理各种定时任务和异步操作。 9. **djabberd**:这是一个高度可扩展的...

    dispatch:调度-内存中异步作业处理

    总之,"dispatch:调度-内存中异步作业处理"涉及的是在Crystal语言环境下,如何有效地使用Job队列和调度器来管理和执行内存中的异步任务,以提升程序的并发性和性能。通过深入理解和实践,开发者能够构建出高效且可...

    基于Eclipse的工具开发

    文件还详细介绍了SWT/JFace的使用,包括资源管理、异步作业调度、对话框的创建以及Eclipse资源API的使用。这些知识点对于深入理解和掌握Eclipse插件开发至关重要。 - **SWT/JFace**:提供了创建GUI的底层API,包括...

    Python-MLQ机器学习作业的异步队列

    "Python-MLQ机器学习作业的异步队列"是一个专门针对机器学习任务设计的异步队列系统,名为MLQ。这个框架旨在优化worker处理长时间运行的作业,通过将计算密集型任务分发到其他计算资源,如多核CPU或分布式系统,以...

    操作系统OS实验报告-Linux基本操作与编程+作业调度算法模拟+Linux文件操作与内存管理算法模拟.doc

    在作业调度算法模拟中,我们讨论了进程的特征,包括结构特征、动态性、并发性、独立性、异步性等。我们还讨论了在 Linux 中如何设置前、后台命令和程序的执行,了解了符号&的作用。 三、Linux 文件操作与内存管理...

    操作系统课程设计:基于C++&QT可视化模拟操作系统作业调度.zip

    在这个项目中,“基于C++&QT可视化模拟操作系统作业调度”是一个典型的实例,它涵盖了多方面的知识点。 首先,C++是面向对象的编程语言,它的核心特性包括封装、继承和多态性。在操作系统课程设计中,C++被用于实现...

Global site tag (gtag.js) - Google Analytics