文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Eclipse中的Jobs框架的简单介绍

2023-06-17 22:03

关注

这篇文章主要讲解了“Eclipse中的Jobs框架的简单介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Eclipse中的Jobs框架的简单介绍”吧!

了解Eclipse多线程机制,需要先了解一下Jobs框架——这是Eclipse运行时的重要组成部分。Jobs框架介绍如下:

Eclipse 在 org.eclipse.core.runtime.osgi 运行时插件里提供了 Jobs API 。 Jobs API 被广泛的应用到 Eclipse 平台中,用户所开发的 eclipse 插件里。 Job 是 Eclipse 运行时重要的组成部分(基于 equinox 的 OSGi 框架则是 Eclipse 运行时的最重要的组成部分)。 Job 可以理解成被平台调用异步运行的代码块。 Job 可以异步的执行,多个 Jobs 可以并发执行。那么读者会问了?为什么 eclipse 平台要提供这样的 API 出来,为什么不直接使用 java.lang.Thread 呢?

原因有以下几点:

1)性能更好:通过使用线程池实现了线程共享,减少了创建和销毁线程的开销,提高了性能。

2)交互响应信息:Job 提供了一个框架,开发人员使用 Job 很容易实现与用户的交互,例如允许用户取消 Job 的执行或者显示 Job 。

3)调度的灵活性:可以马上运行一个 Job,可以稍后运行一个 Job, 还可以反复的运行一个 Job

4)Job 的监听机制:Job 监听器监听 Job 的状态信息,比如,知道一个 Job 何时开始运行以及何时结束运行等。

5)优先级及互斥的灵活应用:Job 提供了多种方式来控制 Job 的调度,开发者可以设定 Job 的优先级(读者应注意这一点,JobManager 不保证优先级高的 Job 一定比优先级低的 Job 先被调度执行),也可以使用调度规则保证 Jobs 的同步与互斥。

下面我们首先介绍一下 Jobs 的框架 , 如图 1 所示。其囊括了 org.eclipse.core.runtime.jobs 包内的所有接口和类。

Eclipse中的Jobs框架的简单介绍

图 1. Jobs框架

IJobManager 是 Job 管理器类的接口,其中定义了一些对 Job 以及 JobFamily 操作的一些 API 。有关 Job 管理器的实现,我们将在线程池机制一节中作详细介绍。

当并发执行多个 Jobs 的时候,可能会引发冲突(Conflict)。 Job 的框架则充分考虑到了这种情况,并提供了管理和避免冲突的工具。 ISchedulingRule 接口,是用来管理共享资源访问冲突的技术。它使得 IJobManager 能够识别出冲突的 Jobs,进而能保证这些不能在一起执行的 Jobs 不在同一时间被调度或者启动。 ISchedulingRule 接口的子类 MultiRule 表示一组固定的子调度规则,如果任何一个 MultiRule 的子调度规则和另一个调度规则相冲突,那么该 MultiRule 和另一个调度规则就会发生冲突。形式化的说,一个组合调度规则表示其所有的子调度规则关于 isConflicting 方法等价的逻辑交集。组合调度规则不会再包含另一个组合调度规则,如果你把一个组合规则作为子规则加入到另一个组合规则中,算法就是该组合规则的所有子规则被加入到另一个组合规则中去了。

ILock ,锁是用来对排他性资源的访问控制的。锁是可以重入的,也就是说同一个线程在不释放已有锁的情况下,可多次获取该锁。当成功获取锁的次数和成功释放锁的次数相等时,锁才能被释放掉。通过实现释放等待策略,锁避免了循环等待的死锁。如果一组线程陷入一个死锁,一个线程将会失去它所拥有的锁,进而打破死锁,使得其它的线程能够继续执行。一旦线程获得了运行所需要的所有的锁,它将获得对锁控制的排他性资源的访问。

当一个线程正等待一个 acquire() 方法调用的时候,才可能会失去锁 ( 参见本文的线程同步机制部分 ) 。程序应用队列(先来先得)管理不同的线程来获取锁。线程获取的锁一定要释放掉,一般在 finally 程序块内释放锁。例如:

lock.acquire();    try {        // ... 执行程序 ...    } finally {        lock.release();    }

IJobChangeListener 接口,监听到 Job 的状态信息,进而执行相应的逻辑操作。

ProgressProvider 类,为正在运行的 jobs 向 Job 管理器提供进度控制器。任何时候,它只有一个实例存在。该类仅由平台相关的插件内部使用。

感谢各位的阅读,以上就是“Eclipse中的Jobs框架的简单介绍”的内容了,经过本文的学习后,相信大家对Eclipse中的Jobs框架的简单介绍这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯