我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Eclipse中的Jobs框架的简单介绍

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Eclipse中的Jobs框架的简单介绍

这篇文章主要讲解了“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

Eclipse中的Jobs框架的简单介绍

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Eclipse中的Jobs框架的简单介绍

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

scrapy框架的简单介绍

这篇文章主要介绍“scrapy框架的简单介绍”,在日常操作中,相信很多人在scrapy框架的简单介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”scrapy框架的简单介绍”的疑惑有所帮助!接下来,请跟着小编
2023-06-02

NodeJs下的测试框架Mocha的简单介绍

介绍和代码下载 Mocha在2011年发布,是目前最为流行的javascript框架之一,在本文我们重点介绍它在NodeJs上的使用。 如果你需要下载实例代码,可以通过去官网查找。https://mochajs.org/ 下载代码后安装依赖
2022-06-04

Spring框架七大模块简单介绍

Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring框架的7个模块组成 Spring框架的每个
2023-05-30

Android中的Adapter简单介绍

Android中的Adapter在自定义显示列表时非常有用,比如SimpleAdapter,它的构造函数是:  public SimpleAdapter (Context context, List> data, int resource,
2022-06-06

Django框架的简介

本篇内容主要讲解“Django框架的简介”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Django框架的简介”吧!Python这些年火得厉害,web框架也是应运而生。Django算是其中比较典型
2023-06-04

python web框架的介绍

随着互联网的兴起,web开发变得愈发的重要。Python作为当前火热的语言, 其中的web开发框架可以说是百花齐放,下面聊一聊这些框架。一: 基于Python的代表性Web框架DjangoDjango是一个开放源代码的Web应用框架,由Py
2023-01-30

jQuery中bind的用法简单介绍

jQuery中的bind()方法用于将一个处理函数绑定到指定的元素上,该处理函数将在特定事件触发时被调用。bind()方法的基本语法如下:```javascript$(selector).bind(event, data, handler)
2023-08-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录