ForkJoin框架示例(一)
来源:互联网 发布:veket linux安卓版 编辑:程序博客网 时间:2024/06/11 18:28
package com.zzj.concurrency;import java.io.IOException;import java.util.Random;import java.util.concurrent.ForkJoinPool;import java.util.concurrent.RecursiveAction;/** * 计算一千万个1到100之间的数值之和,此示例使用没有返回值的任务,没有合并结果 * @author lenovo * */public class ForkJoinTest { static int[] nums = new int[10000000]; static int max_num = 50000; static{ Random r = new Random(); for (int i = 0; i < nums.length; i++) { nums[i] = r.nextInt(100); } } /** * 没有返回值 * @author lenovo * */ static class AddTask extends RecursiveAction{ private static final long serialVersionUID = 1L; private int start; private int end; public AddTask(int start, int end) { this.start = start; this.end = end; } @Override protected void compute() { if (end - start <= max_num) { int s = 0; for (int i = start; i < end; i++) { s += nums[i]; } System.out.println("from " + start + " to " + end + ":" + s); } else { int middle = start + (end - start) / 2; AddTask addTask1 = new AddTask(start, middle); AddTask addTask2 = new AddTask(middle, end); addTask1.fork(); addTask2.fork(); } } } public static void main(String[] args) throws IOException { ForkJoinPool pool = new ForkJoinPool(); pool.execute(new AddTask(0, nums.length)); System.in.read(); // 必须阻塞,ForkJoinPool线程是后台线程 }}
阅读全文
0 0
- ForkJoin框架示例(一)
- ForkJoin框架(一):ForkJoin框架概述
- ForkJoin框架示例(二)
- ForkJoin框架(二):ForkJoinTask
- ForkJoin框架
- 一个ForkJoin的示例
- Java7中的ForkJoin并发框架初探(下)—— ForkJoin的应用
- [转]Java7中的ForkJoin并发框架初探(下)—— ForkJoin的应用
- 学习笔记之Java7中的ForkJoin并发框架初探(下)—— ForkJoin的应用
- Java7 ForkJoin 框架
- 我是菜鸟:ForkJoin框架
- ForkJoin框架解析
- 多线程之ForkJoin框架
- ForkJoin框架的自我实现
- ForkJoin多核并行框架总结
- ForkJoin
- ForkJoin
- forkjoin
- 第一章 开始
- python数据分析系列教程——python对象与json字符串的相互转化,json文件的存储与读取
- 多线程
- C#中的线程(一)入门
- 应用深度学习(台大陈蕴侬&李宏毅) Part1
- ForkJoin框架示例(一)
- Linux--open函数使用详解
- 安装MySQL与安装Hive
- day8,9 c语言作业
- RandomAccess接口详解
- android studio学习----调试---断点调试
- 将SpringBoot工程部署到外部Tomcat服务器
- 10.26
- 一篇关于在线音乐接口分析抓取的文章