Java語言是一種功能強大的編程語言,它的多線程性能出眾,而且使用起來非常方便。在Java中,有兩種常見的多線程實現方法,它們分別是fork和exec。
// 使用fork實現多線程 public class ForkExample extends RecursiveTask{ private final int threshold = 500; @Override protected Integer compute() { if (size< threshold) { int sum = 0; for (int i = 0; i< size; i++) { sum += array[i]; } return sum; } else { ForkExample left = new ForkExample(array, start, size / 2); left.fork(); ForkExample right = new ForkExample(array, start + size / 2, size - size / 2); int rightResult = right.compute(); int leftResult = left.join(); return leftResult + rightResult; } } } ForkJoinPool pool = new ForkJoinPool(); int sum = pool.invoke(new ForkExample(array, 0, array.length));
上面的代碼演示了如何使用Fork/Join框架的實現多線程。這種實現方法主要是通過將一個大的任務劃分成多個小的任務,然后多線程地執行這些小的任務,最后再將結果匯總。在Fork/Join框架中,有兩種重要的類,它們分別是ForkJoinTask和ForkJoinPool。
// 使用exec實現多線程 public class ExecExample { public static void main(String[] args) throws Exception { ExecutorService executor = Executors.newFixedThreadPool(5); List>tasks = new ArrayList<>(); tasks.add(() ->{ int sum = 0; for (int i = 0; i< 100; i++) { sum += i; } return sum; }); tasks.add(() ->{ int sum = 0; for (int i = 100; i< 200; i++) { sum += i; } return sum; }); List >results = executor.invokeAll(tasks); int sum = 0; for (Future result : results) { sum += result.get(); } System.out.println("sum: " + sum); executor.shutdown(); } } 在上述示例中,我們首先創建了一個線程池,然后將任務添加到任務隊列中。最后,我們執行這些任務并等待它們的執行結果,并將多個線程的結果合并。
上一篇html登陸頁面源代碼
下一篇vue手機號