Rumah >Java >javaTutorial >Bagaimana untuk menggunakan rangka kerja Fork/Join dalam fungsi Java concurrency dan multi-threading?
Bagaimana untuk membuat tugasan selari menggunakan rangka kerja Fork/Join di Java? Tentukan logik tugasan, kira keputusan atau lakukan tindakan. Cipta ForkJoinPool untuk mengurus benang selari. Gunakan kaedah fork() untuk menyerahkan tugas. Gunakan kaedah join() untuk mendapatkan hasil tugasan.
Java Fork/Join Framework: Alat berkuasa dalam concurrency dan multi-threading
Fork/Join framework ialah alat berkuasa dalam pustaka concurrency Java yang menggunakan strategi bahagi dan takluk untuk menyelaraskan tugas. Ia berdasarkan algoritma "mencuri tugas", di mana utas bekerjasama dalam tugasan dan mencuri tugasan daripada baris gilir yang dikongsi.
Cara menggunakan rangka kerja Fork/Join
fork()
untuk menyerahkan tugasan ke kumpulan benang. 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()
untuk mendapatkan hasil pelaksanaan tugas. 🎜🎜🎜Kes praktikal: Jujukan Fibonacci🎜🎜🎜Gunakan rangka kerja Fork/Join untuk mengira Jujukan Fibonacci:🎜rrreee🎜Contoh ini mencipta kelas FibonacciTask
, yang Wrote semula kaedah code>compute() untuk mengira jujukan Fibonacci. Ia menggunakan kaedah fork()
untuk menyerahkan subtugasan kepada kumpulan benang dan kaedah join()
untuk mendapatkan hasilnya. Kelas FibonacciForkJoin
mencipta ForkJoinPool
dan menyerahkan FibonacciTask
, kemudian mendapatkan dan mencetak hasilnya. 🎜Atas ialah kandungan terperinci Bagaimana untuk menggunakan rangka kerja Fork/Join dalam fungsi Java concurrency dan multi-threading?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!