一、概念
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.乙個執行緒的某步計算依賴於其它執行緒的執行結果。用生活例子舉例,小明約小張和小李吃飯,小...