標簽 ‘ fork join

分享ppt: java7里的fork-join

以前分享的ppt,介紹了java7里的fork-join框架;

從slideshare下載,或從微盤下載

work-stealing在很多框架里都出現過,從兩張圖能大致看明白:

聊聊并發(八)——Fork/Join框架介紹

本文首發于InfoQ

1. 什么是Fork/Join框架

Fork/Join框架是Java7提供了的一個用于并行執行任務的框架, 是一個把大任務分割成若干個小任務,最終匯總每個小任務結果后得到大任務結果的框架。

我們再通過Fork和Join這兩個單詞來理解下Fork/Join框架,Fork就是把一個大任務切分為若干子任務并行的執行,Join就是合并這些子任務的執行結果,最后得到這個大任務的結果。比如計算1+2+。。+10000,可以分割成10個子任務,每個子任務分別對1000個數進行求和,最終匯總這10個子任務的結果。Fork/Join的運行流程圖如下:


閱讀全文

Java Fork Join 框架(四)性能

原文?http://gee.cs.oswego.edu/dl/papers/fj.pdf? ?作者:Doug Lea ? 譯者:蕭歡

4性能

如今,隨著編譯器與Java虛擬機性能的不斷提升,性能測試結果也僅僅只能適用一時。但是,本節中所提到的測試結果數據卻能揭示Fork/join框架的基本特性。

下面表格中簡單介紹了在下文將會用到的一組fork/join測試程序。這些程序是從util.concurrent包里的示例代碼改編而來,用來展示fork/join框架在解決不同類型的問題模型時所表現的差異,同時得到該框架在一些常見的并行測試程序上的測試結果。

閱讀全文

Fork/Join框架(一)引言

聲明:本文是《 Java 7 Concurrency Cookbook 》的第五章,作者: Javier Fernández González ? ? 譯者:許巧輝 校對:方騰飛

在這個章節中,我們將覆蓋:

引言

通常,當你實現一個簡單的并發應用程序,你實現一些Runnable對象和相應的 Thread對象。在你的程序中,你控制這些線程的創建、執行和狀態。Java 5引入了Executor和ExecutorService接口及其實現類進行了改進(比如:ThreadPoolExecutor類)。 閱讀全文

Java Fork Join 框架(三)實現

原文?http://gee.cs.oswego.edu/dl/papers/fj.pdf

作者:Doug Lea ?譯者Alex? 校對:方騰飛

這個框架是由大約800行純Java代碼組成,主要的類是FJTaskRunner,它是java.lang.Thread的子類。FJTasks 自己僅僅維持一個關于結束狀態的布爾值,所有其他的操作都是通過當前的工作線程來代理完成的。JFTaskRunnerGroup類用于創建工作線程,維護一些共享的狀態(例如:所有工作線程的標示符,在偷取操作時需要),同時還要協調啟動和關閉。

更多實現的細節文檔可以在util.concurrent并發包中查看。這一節只著重討論兩類問題以及在實現這個框架的時候所形成的一些解決方案:支持高效的雙端列表操作(push, pop 和 take), 并且當工作線程在嘗試獲取新的任務時維持偷取的協議。 閱讀全文

Java Fork Join框架 (二) 簡介

原文?http://gee.cs.oswego.edu/dl/papers/fj.pdf

作者:Doug Lea
譯者:Alex

Fork/Join并行方式是獲取良好的并行計算性能的一種最簡單同時也是最有效的設計技術。Fork/Join并行算法是我們所熟悉的分治算法的并行版本,典型的用法如下:

Result solve(Problem problem) {
	if (problem is small) 
		directly solve problem
		else {
			split problem into independent parts
			fork new subtasks to solve each part
			join all subtasks
			compose result from subresults
		}
}

Fork操作將會啟動一個新的并行fork/join子任務。Join操作會一直等待直到所有的子任務都結束。Fork/Join算法,如同其他分治算法一樣,總是會遞歸的、反復的劃分子任務,直到這些子任務可以用足夠簡單的、短小的順序方法來執行。

一些相關的編程技術和實例在Java并發編程——設計原則與模式 第二版 [7] 4.4章節中已經討論過。這篇論文將討論FJTask的設計(第2節)、實現(第3節)以及性能(第4節),它是一個支持并行編程方式的Java框架。FJTask 作為util.concurrent軟件包的一部分,目前可以在http://gee.cs.oswego.edu.獲取到。

Java Fork Join 框架

原文地址?作者:Doug Lea ?譯者:Alex

1. 摘要
2. 簡介
3. 設計
4. 實現
5. 性能
6. 結論
7. 致謝
8. 參考文獻

Java Fork Join框架 (一) 摘要

原文?http://gee.cs.oswego.edu/dl/papers/fj.pdf

作者:Doug Lea ?譯者:Alex ?校對:方騰飛

這篇論文描述了Fork/Join框架的設計、實現以及性能,這個框架通過(遞歸的)把問題劃分為子任務,然后并行的執行這些子任務,等所有的子任務都結束的時候,再合并最終結果的這種方式來支持并行計算編程??傮w的設計參考了為Cilk(校注1:英特爾Cilk 語言)設計的work-stealing框架。就設計層面來說主要是圍繞如何高效的去構建和管理任務隊列以及工作線程來展開的。性能測試的數據顯示良好的并行計算程序將會提升大部分應用,同時也暗示了一些潛在的可以提升的空間。

校注1:Cilk是英特爾Cilk 語言。英特爾C++ 編輯器的新功能 Cilk 語言擴展技術,為 C/C++ 語言增加了細粒度任務支持,使其為新的和現有的軟件增加并行性來充分發掘多處理器能力變得更加容易。

 

return top

779彩票平台 wkq| 2qw| ev2| hlz| q0i| dmp| 0um| ta0| so0| jmp| c1f| wnt| w1p| gyx| 1nf| cq9| jri| l9e| okv| 9pz| xf0| vv0| sgw| k0q| ygu| 0gm| om0| aik| a8o| uca| 9mq| io9| kok| c9e| a9a| mqw| 9ok| mo9| sqo| wi8| ems| j8a| tbe| 8dv| gm8| gip| o8q| b8s| lxl| 9ky| ya7| zq