欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA Fork Join Demo 1

发布时间:2025/5/22 编程问答 43 豆豆
生活随笔 收集整理的这篇文章主要介绍了 JAVA Fork Join Demo 1 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

2019独角兽企业重金招聘Python工程师标准>>>

package com.famous.thread.util;import java.util.concurrent.ForkJoinPool;import java.util.concurrent.Future;import java.util.concurrent.RecursiveTask;/*** fork join framwork test* * @author zhenglong fork/join任务应该是纯内存算法,而没有I/O操作*         此外,应该尽可能避免通过共享状态来进行任务间的通信,因为这通常意味着加锁会被执行。理想情况下,*         仅当一个任务fork另一个任务或一个任务join另一个任务时才进行任务通信。*/public class ForkJoinDemo {public static void main(String[] args) {ForkJoinPool forkJoinPool = new ForkJoinPool();CountTask task = new CountTask(1, 4);Future<Integer> result = forkJoinPool.submit(task);try {System.out.println(result.get());} catch (Exception e) {}}}class CountTask extends RecursiveTask<Integer> {private int min;private int max;private int threadCount;public int getMin() {return min;}public void setMin(int min) {this.min = min;}public int getMax() {return max;}public void setMax(int max) {this.max = max;}public int getThreadCount() {return threadCount;}public void setThreadCount(int threadCount) {this.threadCount = threadCount;}public CountTask(int min, int max) {this.min = min;this.max = max;}/*** */private static final long serialVersionUID = 4618283439406101422L;@Overrideprotected Integer compute() {int sum = 0;boolean canCompute = (max - min) <= threadCount;// 小于if (canCompute) {for (int i = min; i <= max; i++)sum += i;} else {int mid = (max + min) / 2;CountTask leftTask = new CountTask(min, mid);CountTask rightTask = new CountTask(mid + 1, max);// 执行子任务leftTask.fork();rightTask.fork();int leftResult = (int) leftTask.join();int rightResult = (int) rightTask.join();sum = leftResult + rightResult;}return sum;}}

 

转载于:https://my.oschina.net/payzheng/blog/691555

总结

以上是生活随笔为你收集整理的JAVA Fork Join Demo 1的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。