成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談Eclipse中的Jobs框架

開發 后端
本文介紹了Eclipse平臺的Jobs框架,這是Eclipse運行時的重要組成部分,Eclipse多線程機制的關鍵之一。 Job 可以異步的執行,多個 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 包內的所有接口和類。

Jobs 框架 

圖 1. Jobs框架 

IJobManager 是 Job 管理器類的接口,其中定義了一些對 Job 以及 JobFamily 操作的一些 API 。有關 Job 管理器的實現,我們將在線程池機制一節中作詳細介紹。

當并發執行多個 Jobs 的時候,可能會引發沖突(Conflict)。 Job 的框架則充分考慮到了這種情況,并提供了管理和避免沖突的工具。 ISchedulingRule 接口,是用來管理共享資源訪問沖突的技術。它使得 IJobManager 能夠識別出沖突的 Jobs,進而能保證這些不能在一起執行的 Jobs 不在同一時間被調度或者啟動。 ISchedulingRule 接口的子類 MultiRule 表示一組固定的子調度規則,如果任何一個 MultiRule 的子調度規則和另一個調度規則相沖突,那么該 MultiRule 和另一個調度規則就會發生沖突。形式化的說,一個組合調度規則表示其所有的子調度規則關于 isConflicting 方法等價的邏輯交集。組合調度規則不會再包含另一個組合調度規則,如果你把一個組合規則作為子規則加入到另一個組合規則中,算法就是該組合規則的所有子規則被加入到另一個組合規則中去了。

ILock ,鎖是用來對排他性資源的訪問控制的。鎖是可以重入的,也就是說同一個線程在不釋放已有鎖的情況下,可多次獲取該鎖。當成功獲取鎖的次數和成功釋放鎖的次數相等時,鎖才能被釋放掉。通過實現釋放等待策略,鎖避免了循環等待的死鎖。如果一組線程陷入一個死鎖,一個線程將會失去它所擁有的鎖,進而打破死鎖,使得其它的線程能夠繼續執行。一旦線程獲得了運行所需要的所有的鎖,它將獲得對鎖控制的排他性資源的訪問。

當一個線程正等待一個 acquire() 方法調用的時候,才可能會失去鎖 ( 參見本文的線程同步機制部分 ) 。程序應用隊列(先來先得)管理不同的線程來獲取鎖。線程獲取的鎖一定要釋放掉,一般在 finally 程序塊內釋放鎖。例如:

  1. lock.acquire();   
  2.  try {   
  3.      // ... 執行程序 ...   
  4.  } finally {   
  5.      lock.release();   
  6.  }   
  7.  

IJobChangeListener 接口,監聽到 Job 的狀態信息,進而執行相應的邏輯操作。

ProgressProvider 類,為正在運行的 jobs 向 Job 管理器提供進度控制器。任何時候,它只有一個實例存在。該類僅由平臺相關的插件內部使用。

【編輯推薦】

  1. Eclipse插件升級后不正常的問題解決方法(3.3.0版本)
  2. Eclipse JDT的自定義跳轉功能
  3. 六大便捷Eclipse JDT特性一覽
  4. 部署Eclipse RAP到Tomcat的步驟詳解
  5. Eclipse 3.5插件安裝與卸載的10個小竅門
責任編輯:yangsai 來源: IBMDW
相關推薦

2011-07-08 17:57:37

iPhone CoreData 數據庫

2009-06-29 17:17:57

Spring

2009-07-09 16:33:06

eclipse jvm

2009-06-23 09:57:40

EclipsePerl腳本

2017-08-04 11:41:53

Javathreadpool框架

2017-08-07 20:50:27

JavaForkJoin

2009-04-24 09:43:09

.NETASP.NET框架

2011-03-09 09:44:15

JavaMina框架

2011-08-31 13:27:52

AndroidPhoneGap

2010-07-23 13:29:12

Perl腳本

2011-02-17 11:18:29

PythonWebRuby

2009-06-04 09:11:34

學習strutsstruts框架

2012-06-25 09:28:42

.NET可逆框架

2009-07-22 13:24:24

ASP.NET MVC

2013-07-08 14:45:52

2009-06-03 10:24:11

LoadMaskSilverlight

2019-09-24 16:16:40

Redis數據結構數據庫

2009-05-05 09:46:18

Java編碼理論字符

2009-05-06 11:09:10

Oracle物化視圖數據庫

2017-08-28 15:21:29

異步處理回調函數異步編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 超碰在线免费公开 | 在线观看视频福利 | 1区2区视频 | 日韩手机在线视频 | 91色啪 | 久久久国产一区 | 欧美日韩在线观看视频 | 久久国产亚洲精品 | 在线免费观看黄视频 | 欧美精品一区二区在线观看 | 亚洲高清视频一区二区 | 亚洲高清在线观看 | 免费a网站| 亚洲精品字幕 | 成人三级av | 黄色片免费 | 国产无套一区二区三区久久 | 国产一区免费视频 | 日韩一二区 | 国产精品一区二区电影 | 日日综合 | 黄色一级电影免费观看 | 91在线中文字幕 | 成人在线黄色 | 色呦呦在线 | 亚洲精品久久久久中文字幕欢迎你 | 成年人视频在线免费观看 | 伊人网站 | 久久黄色网| 日韩在线 | 国产高清精品一区二区三区 | 国产真实乱对白精彩久久小说 | 伊人婷婷| 999国产精品视频免费 | 成人一区二区三区 | 成人黄色电影在线观看 | 欧美精品一区在线 | 91久久久久久久久久久 | 伊伊综合网 | 精品日韩 | 亚洲视频在线观看 |