国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Java基礎(chǔ)——一文讀懂Fork/Join框架

2023-07-24 18:16 作者:懶人Java屈原  | 我要投稿

分而治之

fork/Join框架的思想是將一個規(guī)模為n的大任務(wù),fork成幾個規(guī)模較小的K個子任務(wù),最后合并所有子任務(wù)的結(jié)果,返回最終結(jié)果。

工作竊取

如圖一個規(guī)模為T的任務(wù)劃分成12個子任務(wù),分別有4個線程在執(zhí)行。如果當(dāng)前線程沒有可執(zhí)行任務(wù)時,會從其他線程的任務(wù)隊列中竊取任務(wù)來執(zhí)行。工作竊取算法保證了cpu不會處于空閑狀態(tài)。

ForkJoin用法

1.帶返回值RecursiveTask


打印統(tǒng)計結(jié)果



2.無返回值RecursiveAction

等待所有任務(wù)執(zhí)行結(jié)束



Java8 Stream并行流的Fork/Join框架使用

如下所示代碼,利用Java8的并行流,對1到5的數(shù)進行相乘

1.parallel()方法設(shè)置標(biāo)志位

設(shè)置了sourceStage.parallel 值為true

2.reduce()方法根據(jù)標(biāo)志位來判斷是否并行

evaluate方法,會調(diào)用isParallel(),對上面的sourceStage.parallel進行判斷

3.terminalOp的接口以及實現(xiàn)類

接口TerminalOp

實現(xiàn)類ReduceOps新建了ReduceTask對象

對ReduceTask進行代碼追蹤,最后會追蹤到ForkJoinTask類中,invoke方法是ForkJoinTask()的invoke()方法

結(jié)論

由此我們可以看出,Java8的Stream并行流底層代碼,確實采用了Fork/Join框架來實現(xiàn)


Java基礎(chǔ)——一文讀懂Fork/Join框架的評論 (共 條)

分享到微博請遵守國家法律
宁晋县| 沂源县| 定安县| 尼玛县| 建昌县| 南溪县| 荥阳市| 长泰县| 汉川市| 鹤山市| 兴山县| 甘南县| 上饶县| 辽宁省| 莱州市| 莱西市| 霍林郭勒市| 嵊州市| 新竹市| 万盛区| 高邑县| 上林县| 腾冲县| 赤水市| 峨眉山市| 和顺县| 天气| 彝良县| 夏津县| 襄汾县| 驻马店市| 延吉市| 三穗县| 桓台县| 宁海县| 广西| 洪洞县| 衡阳市| 长乐市| 阿巴嘎旗| 青神县|