最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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框架的評論 (共 條)

分享到微博請遵守國家法律
朝阳市| 陆川县| 巴中市| 韩城市| 和田市| 昌都县| 盐源县| 读书| 宜川县| 城步| 丰原市| 会泽县| 桂林市| 筠连县| 安溪县| 罗山县| 游戏| 扎鲁特旗| 大方县| 亚东县| 将乐县| 兰坪| 常宁市| 稷山县| 天等县| 香河县| 西安市| 瑞安市| 家居| 邵武市| 金湖县| 镇江市| 桐梓县| 四会市| 长岛县| 梨树县| 镇赉县| 安国市| 郁南县| 鹤山市| 区。|