fork/join框架是jdk1.7引入的平行計算框架,核心概念:
1. 將大任務自動遞迴分解成小任務並行執行;
2. 工作竊取(work-stealing)演算法,空閒執行緒從另乙個任務佇列獲取任務並執行,避免計算資源閒置。
譬如,要生產10000個蛋糕,可以將其分解成100個任務,每次生產100個。工人1和工人2分別領取50個任務。假如工人1完成30個任務時,工人2已經完成了自己的任務佇列,那麼工人2會從工人1中獲取任務並執行。
/*** fork/join入門示例
*@authortony.lau
*/publicclassforkjoindemo
long
start
= system.
currenttimemillis
();forkjoinpool
pool
=newforkjoinpool();
task
task
=newtask(
list
, 0,
size
);pool
.execute(
task
);while
(!task
.isdone())
pool
.shutdown();if(
task
.iscompletednormally())
for(int
i= 0;
i<
size;i
++) }}
}/**
* 無返回值的任務繼承recursiveaction並重寫compute()方法
*@authortony.lau
*/classtaskextendsrecursiveaction
/** * 1.遞迴分解任務的結束條件
* 2.遞迴分解任務的分解方法
*/@override
protectedvoidcompute()else
}
private
voidmake()
}
}classcake
@override
public
string tostring()
}
演算法入門1 基本概念
演算法 顧名思義,一種計算的方法,在程式設計上,就表現為一組指令序列。為了使得演算法有意義,還規定演算法必須是有限的和確定的,也就是說演算法的執行時間有限 執行的過程是確定的。比如我們寫了 int a 10 a,b為輸入資料 int b 20 int c a b c為輸出資料,演算法為加法運算 這其...
區塊鏈入門學習(1) 概念
鏈客,有問必答!區塊鏈 blockchain 是近年來的大熱門,最近開始學習區塊鏈,以及主流平台以太坊的一些內容,不得不說對於小白而言,內容概念確實多,且雜。以此記來梳理一下知識點,分享一下經驗內容。一 區塊鏈的實質 區塊鏈,第一反映聯想到前段日子瘋漲的位元幣。沒錯,位元幣是依賴於區塊鏈底層框架,是...
機器學習入門基礎概念(1)
時隔兩年半,再次上我這個csdn賬號。最近正好複習機器學習考試,就把一些基本的機器學習概念在部落格記錄一下,就當複習了。一些概念 什麼是機器學習 1.什麼是機器學習?機器學習就是計算機基於資料建立概率統計模型,並運用模型對資料進行 與分析的一門學科。2.期望風險 經驗風險與結構風險 期望風險可以看為...