jvm線程池發(fā)展趨勢-java開發(fā)java經驗技巧

jvm線程池發(fā)展趨勢-java開發(fā)java經驗技巧

ID:30769544

大小:66.56 KB

頁數:4頁

時間:2019-01-03

jvm線程池發(fā)展趨勢-java開發(fā)java經驗技巧_第1頁
jvm線程池發(fā)展趨勢-java開發(fā)java經驗技巧_第2頁
jvm線程池發(fā)展趨勢-java開發(fā)java經驗技巧_第3頁
jvm線程池發(fā)展趨勢-java開發(fā)java經驗技巧_第4頁
資源描述:

《jvm線程池發(fā)展趨勢-java開發(fā)java經驗技巧》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫

1、JVM線程池發(fā)展趨勢?編程開發(fā)技術JVM線程池發(fā)展趨勢木文由ImportNew?fzr翻譯自dzoneo歡迎加入翻譯小組。轉載請見文末要求。多線程已經成為大多數開發(fā)者的興趣所在了。他們努力嘗試想找出最優(yōu)策略來解決這個問題。過去已經有各種嘗試去標準化這些方案。特別是隨著大數據,實時分析等問題領域的興起,又存在著新的挑戰(zhàn)。在這個方向需要走的一步是“DougLea"的作品(一部巨作),以并發(fā)框架(JSR166)的形式提供給我們?,F(xiàn)在開始區(qū)分并發(fā)和并行性。這些只是不同的策略,而且市面上有很多框架提供,都能幫

2、我們達到相同的目的。但在選擇的時候如果能同時知道他們內部的實現(xiàn)細節(jié)對我們也是大有好處的。本文將要探究JVM屮線程池和線程共享的-?些穩(wěn)定有效的選項。當然,隨著多核處理器的廣泛使用,新的問題也隨之而來。開發(fā)人員也開始思考利用高級硬件的“mechanicalsympathyv(譯者注:表示底層硬件的運作方式以及與硬件運行方式協(xié)同的軟件編程)來提高性能。個人以為,當討論線程池時,目前廣泛應用的主要有下述機制:1.Executor框架提供的線程。2.LMAX的RingBuffer概念(譯者注:RingBuf

3、fer即環(huán)形緩沖,LMAX是一種新型零售金融交易平臺,其框架能以低延遲產牛?大量交易,LMAX建立在JVM平臺上。3.基于Actor(事件)的實現(xiàn)。并發(fā)框架下的線程池選項:首先,我個人不贊同使用當卜?流行的線程池概念,而應該使用工作隊列的概念。簡而言Z,在一個執(zhí)行框架可供選擇的各種不同選項都是基于某種順序數據結構,如數組或隊列(阻塞或非阻塞)之類的,比如ConcurrentLinkedQueue(并發(fā)鏈式隊列),ArrayBlockingQueue(數組阻塞隊列),LinkedBlockingQue

4、ue(鏈式阻塞隊列)等等。文檔表明,盡管它們的使用環(huán)境各不相同,但他們隱含的木質/數據結構有相同的性質,如順序插入和遍歷。Queuew優(yōu)勢:1.減少線程創(chuàng)建導致的延遲2.通過優(yōu)化線程數量,可以解決資源不足的問題。這些可以使應用程序和服務器應用響應更快。使用線程池看似-?個很不錯的解決方案但是卻有一個根本性的缺陷:連續(xù)爭用問題。這里是Java中關于一些并發(fā)框架下線程池選項的討論。Disruptor(環(huán)形緩沖):(LMAX的一個基于環(huán)形緩沖區(qū)的高性能進程間消息庫)LMAX的開發(fā)人員使用一個干擾框架來解決

5、連續(xù)爭用問題,這個框架是基于一個叫環(huán)形緩沖的數據結構。它可能是線程間發(fā)送消息的最有效方式了。它是隊列的一種替代實現(xiàn)方式,但它又和SEDA和Actors(譯者注:這兩種都是和Disruptor類似的并發(fā)模型)有一些共同特征。向Disruptor屮放入消息需要兩步,第一步中請一個環(huán)形緩沖的槽位,槽位可為用戶提供寫對應數據的記錄。然后需要提交該條記錄,為了能靈活使用內存,2步法是必須的。只有經過提交,這條消息才能對消費者線程可見。下圖描述了壞狀緩沖這個數據結構(Disruptor的核心):(譯者注:LMA

6、X的核心是一個業(yè)務邏輯處理器,而該業(yè)務邏輯處理器的核心是Disruptor,這是一個并發(fā)組件,能夠在無鎖的情況下實現(xiàn)網絡的Queue并發(fā)操作)Disruptor在多核平臺上能達到很低的延遲同時又有高吞吐量,盡管線程程間需要共享數據以及傳遞消息。它的獨特Z處在于鎖和免爭用結構。它甚至不使用CAS或內存保護。若想了解關于它的更多細節(jié),這里有一篇不錯的文章和官網。使用Disruptor的一個缺點(事實上也算不上缺點)是,你需要提前告知Disruptor應用程序完成任務所需要的線程數?;谑录?對于傳統(tǒng)線程

7、池機制,一個強大的替代方案就是基于事件模型。這種基于事件的線程輪詢/線程池/線程調度機制在函數式編程中很常見。關于這個概念的一個非常流行的實現(xiàn)是基于actor的系統(tǒng)(譯者注:Scala的并發(fā)系統(tǒng)),Akka已成為其實際上的標準。(譯者注:汕畑,?種善于處理進程間通信的框架)Actors是非常輕量級的并發(fā)實體。它們使用一種事件驅動的接收循壞來異步處理消息。消息模式匹配可以很方便地表述一個actor的行為。它們提高了抽彖級別從而使寫,測試,理解和維護并發(fā)/分布式系統(tǒng)更加容易。讓你專注于工作流——消息如何

8、流入系統(tǒng)——而不是低層次的基木概念如線程,鎖以及套接字IOo一個線程可以分配多個或單個actor,而且兩種模型都是依需要選擇的。像Akka這種基于actor的系統(tǒng)的優(yōu)勢冇如下所列:可封裝可監(jiān)督可配置執(zhí)行位置透明重試機制注:調試一個基于actor的系統(tǒng)是一個非常艱難的事情。Disruptor使用一個線程一個消費者模式,不同于Actors使用N個線程M個消費者模式。比如,你可以擁有任意多的actors,然后它們會被分散到一些數目固定的線程屮(通常是-個核-個線程),至于其

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。