8 併發工具類Fork Join

2021-09-28 16:30:18 字數 805 閱讀 9267

一、概念

fork-join 體現「分而治之」思想

將乙個大任務分成n個子執行緒去處理,處理完成後將結果join合併

乙個大任務分成2個執行緒ab執行,每個執行緒執行5個任務,當執行緒a執行完後,發現執行緒b的任務沒執行完,那麼執行緒a會去獲取b的任務執行完並把結果返回到b中,這個情況叫竊取,提高的執行緒執行效率,不會使行執行緒a執行完任務後而空轉

二、使用標準

使用標準正規化:

pool = new forkjoinpool()

task = new forktask

pool.inoke(forktask)

result = mytask.join()

三、例子

同步呼叫,有返回值:

統計乙個單詞在單詞庫出現的次數

public class linetask extends recursivetask

@override

protected integer compute() else

}private integer count(string line,int start,int end,string word)

@override

protected void compute() else

}public void updateproducts()

}public static void main(string args)

}system.out.println("main: end of the program.\n");

}}

執行緒的併發工具類Fork Join

快速排序,歸併排序,二分查詢屬於分而治之。分治法的設計思想是 將乙個難以直接解決的大問題,分豁成一些規模較小的相同問題,以便 各個擊破,分而治之。通常我們不直接繼承forkjointask類,只需要直接繼承其子類。1.recursiveaction 用於沒有返回結果的任務,2.recursiveta...

併發程式設計 Fork Join框架

三 jdk中fork join家族成員 3.2 forkjoinpool 四 使用案例 fork join是jdk提供的乙個用於並行執行任務的框架,是乙個把大任務分割成若干個小任務,最終彙總每個小任務結果後得到大任務結果的框架 fork join是乙個比較特殊的執行緒池框架,專用於需要將乙個任務不斷...

併發工具類

常用的閉鎖工具類 countdownlatch cyclicbarrier futuretask。閉鎖應用場景 1.有a b c三個執行緒一起執行,可是a執行緒需要等待b c執行緒任務執行完畢才繼續往下執行。2.乙個執行緒的某步計算依賴於其它執行緒的執行結果。用生活例子舉例,小明約小張和小李吃飯,小...