您好,登錄后才能下訂單哦!
這篇文章主要講解了“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 包內的所有接口和類。
圖 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框架的簡單介紹這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。