[發明專利]基于對象池來實現線程操作的方法和設備無效
| 申請號: | 200810098476.8 | 申請日: | 2008-05-28 |
| 公開(公告)號: | CN101593131A | 公開(公告)日: | 2009-12-02 |
| 發明(設計)人: | 趙奕;鄭凱;王海川;高志國 | 申請(專利權)人: | 國際商業機器公司 |
| 主分類號: | G06F9/50 | 分類號: | G06F9/50 |
| 代理公司: | 北京市金杜律師事務所 | 代理人: | 馮 譜 |
| 地址: | 美國紐*** | 國省代碼: | 美國;US |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 對象 實現 線程 操作 方法 設備 | ||
技術領域
本發明一般地涉及數據處理,更具體地,涉及基于對象池來實現線程操作的方法和設備。
背景技術
很多現代編程語言已經建立垃圾收集器(GC)作為對象釋放機制。利用此類編程語言開發的應用不能在使用之后顯式地釋放對象以恢復內存消耗。在多線程服務器應用中,更快增長的死亡對象往往觸發過于頻繁的垃圾收集操作,這將消耗太多的CPU時間并且令性能降級。
傳統對象池技術(例如WebSphere內置的對象池)用于將使用過的對象暫時緩存在對象池中以備下次使用,即,通過對象池來重復使用對象而不是將其直接放置到垃圾收集器中。將對象放入到對象池中就意味著該對象不再被程序的任何模塊使用,直到該對象被程序(線程)再次從對象池中取出。對該對象池的兩個操作原語是get(或者getFrom),put(或者putBack),下面是二者的操作語義。
Get操作語義:
IF對象池非空THEN
取出一個對象,將對象返回給線程
ELSE
創建一個新的對象,將對象返回給線程
END?IF
Put操作語義:
IF對象池非滿THEN
將對象放入到對象池中
ELSE
拋棄此對象
END?IF
盡管這樣的對象池技術有效地減小了垃圾收集操作,但當以多線程方式進行運行時,對象池的使用將導致另一種性能問題。如圖1所示,當多個線程要訪問單個的全局對象池時,由于該對象池需要加鎖來保護其內部數據結構的一致性,所以對單個對象池上的鎖爭用將很容易變成性能的瓶頸,破壞程序的可伸縮性。
為了避免上述的對單個的全局對象池的鎖爭用,采取多個對象池來平衡工作負載以及分攤鎖爭用。如圖2中所示,該方案利用一個負載均衡器(Round?Robin選擇器)來分發(輪轉調度)對多個對象池的訪問,每個對象池仍然由鎖來保護,通過降低單個對象池上鎖爭用的概率并延緩爭用頻率來增加并發訪問能力。然而,當線程數目增大時,例如數目大到超過對象池的個數時,其并不解決鎖爭用沖突問題,并且不能確保線程不會比其他線程更為頻繁地嘗試使用這些對象池的一個或多個,這也同樣造成嚴重的鎖爭用。
另外,Java1.2的線程局部類(ThreadLocal?class)技術和其他現有技術中的技術方案也不能支持“生產者-消費者”使用模型和解決其帶來的問題。生產者-消費者使用模型是指:線程A總是從一個對象池中取出對象,然后把該對象傳遞給另外一個線程B使用,線程B使用完該對象之后,總是將該對象歸還給另一對象池。在這種使用模式下,該使用到的兩個子對象池就會出現不均衡現象,即線程A所使用的私有對象池會越來越空,而線程B所使用的私有對象池會越來越滿。
因此,需要一種改進的基于對象池來實現線程操作的方法和設備,其能夠有效地解決對象池的鎖爭用,支持多個線程對對象的共享(即解決“生產者-消費者”使用模型問題),從而提高編程開發的生產效率。
發明內容
本發明的目的是解決對對象池訪問時的鎖爭用問題,從而能夠進行對象池的并發訪問,以及實現多個線程對對象的共享。
為了實現上述的目的,本發明提供一種基于對象池來實現線程操作的方法,該方法包括將多個線程通過映射表與全局對象池中的多個子對象池進行一對一的綁定,響應于線程對全局對象池的訪問,通過映射表查找與該線程綁定的子對象池,以及全局對象池將線程的操作轉發到查找到的與該線程綁定的子對象池。
另外,本發明還提供一種基于對象池來實現線程操作的設備,該設備包括映射裝置,用于將多個線程通過映射表與全局對象池中的多個子對象池進行一對一的綁定,以及轉發裝置,用于響應于線程對全局對象池的訪問,將所述線程的操作轉發到通過映射裝置查找到的與該線程綁定的子對象池。
通過利用本發明提供的方法和設備,可以解決當多個線程訪問對象池出現的鎖爭用問題,從而克服編程開發過程中出現的性能瓶頸,另外本發明也同樣解決由于生產者-消費者模型所帶來的問題,更好地實現了對象池的均衡和共享。
附圖說明
通過以下結合附圖的說明,并且隨著對本發明的更全面了解,本發明的其他目的和效果將變得更加清楚和易于理解,其中:
圖1是示出現有技術的多個線程對單個全局對象池進行訪問的示意圖;
圖2是示出現有技術的多個線程對多個對象池進行訪問的示意圖;
圖3是示出根據本發明實施方式的將多個線程通過映射表與全局對象池中的多個子對象池進行一對一綁定的方法的示意圖;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于國際商業機器公司,未經國際商業機器公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200810098476.8/2.html,轉載請聲明來源鉆瓜專利網。





