Java で Fork/Join フレームワークを使用して並列タスクを作成するにはどうすればよいですか?タスクのロジックを定義し、結果を計算したり、アクションを実行したりします。並列スレッドを管理するために ForkJoinPool を作成します。 fork() メソッドを使用してタスクを送信します。 join() メソッドを使用してタスクの結果を取得します。
Java Fork/Join フレームワーク: 並行性とマルチスレッドの強力なツール
Fork/Join フレームワークは、分割統治戦略を使用してタスクを並列化する Java 並行性ライブラリの強力なツールです。これは、スレッドがタスクで共同作業し、共有キューからタスクを盗む「タスク盗用」アルゴリズムに基づいています。
Fork/Join フレームワークを使用して RecursiveTask クラスまたは RecursiveAction クラスを作成する方法
fork()
メソッドを使用して、タスクをスレッド プールに送信します。 fork()
方法提交任务到线程池。join()
方法获取任务的执行结果。实战案例:斐波那契数列
使用 Fork/Join 框架计算斐波那契数列:
import java.util.concurrent.ForkJoinPool; import java.util.concurrent.ForkJoinTask; import java.util.concurrent.RecursiveTask; class FibonacciTask extends RecursiveTask<Long> { private final int n; public FibonacciTask(int n) { this.n = n; } @Override public Long compute() { if (n <= 1) { return (long) n; } else { FibonacciTask leftTask = new FibonacciTask(n - 1); FibonacciTask rightTask = new FibonacciTask(n - 2); leftTask.fork(); rightTask.fork(); return leftTask.join() + rightTask.join(); } } } public class FibonacciForkJoin { public static void main(String[] args) { ForkJoinPool pool = new ForkJoinPool(); int n = 40; FibonacciTask task = new FibonacciTask(n); Long result = pool.invoke(task); System.out.println("斐波那契数列第 " + n + " 项为:" + result); } }
这个示例创建了一个 FibonacciTask
类,它重写了 compute()
方法来计算斐波那契数列。它使用 fork()
方法将子任务提交到线程池,并使用 join()
方法获取结果。FibonacciForkJoin
类创建一个 ForkJoinPool
并提交 FibonacciTask
join()
メソッドを使用して、タスクの実行結果を取得します。 🎜🎜🎜実際のケース: フィボナッチ数列🎜🎜🎜Fork/Join フレームワークを使用してフィボナッチ数列を計算します:🎜rrreee🎜この例では、FibonacciTask
クラスを作成します。 code>compute() メソッドを使用してフィボナッチ数列を計算します。 fork()
メソッドを使用してサブタスクをスレッド プールに送信し、join()
メソッドを使用して結果を取得します。 FibonacciForkJoin
クラスは、ForkJoinPool
を作成し、FibonacciTask
を送信して、結果を取得して出力します。 🎜以上がJava 関数の同時実行性とマルチスレッドで Fork/Join フレームワークを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。