這篇文章主要講解了“Eclipse中的Jobs框架的簡單介紹”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Eclipse中的Jobs框架的簡單介紹”吧!
10年積累的網站建設、成都做網站經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先網站設計后付款的網站建設流程,更有湟源免費網站建設讓你可以放心的選擇與我們合作。
了解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框架的簡單介紹這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創新互聯,小編將為大家推送更多相關知識點的文章,歡迎關注!
本文標題:Eclipse中的Jobs框架的簡單介紹
本文來源:http://vcdvsql.cn/article16/jhjcgg.html
成都網站建設公司_創新互聯,為您提供服務器托管、網站設計、手機網站建設、App設計、品牌網站設計、搜索引擎優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯