【Java高并发学习】Fork/Join框架、以及JDK中的高并发容器
来源:互联网 发布:11对战平台 mac版 编辑:程序博客网 时间:2024/06/05 02:28
1.ForkJoin框架
简单的数列求和demo
import java.util.ArrayList;import java.util.concurrent.ExecutionException;import java.util.concurrent.ForkJoinPool;import java.util.concurrent.ForkJoinTask;import java.util.concurrent.RecursiveTask;/** * 分而治之数列求和 * 分而治之可以有效处理量数据,把数据分成批次进行处理,然后再整合起来获得结果。 * 注意:如果划分层次太深,一直得不到返回,1线程数量太多,系统性能严重下降;2栈溢出。 * RecursiveTask<Long>返回V类型、RecursiveAction无返回类型;均继承ForkJoinTask。 * @author wsz * @date 2017年12月6日 */public class ForkJoinDemo extends RecursiveTask<Long>{private static final long serialVersionUID = 1L;//临界值private static final int THRESHOLD = 1000;private long start ;private long end;public ForkJoinDemo(long start, long end) {this.start = start;this.end = end;}//需要实现继承的抽象方法@Overrideprotected Long compute() {long sum = 0L;boolean canCompute = (end - start) < THRESHOLD;//判断是否可分割if(canCompute) {//小于可分割界限,直接进行计算for(long i = start; i<end ; i++) {sum +=i;}}else {//进行分割long step = (start+end)/100;//小任务组数ArrayList<ForkJoinDemo> subTasks = new ArrayList<ForkJoinDemo>();long pos = start;for (int i = 0; i < 100; i++) {long lastOne = pos+step;//当前组任务界限if(lastOne > end) //到达最后lastOne = end;ForkJoinDemo subTask = new ForkJoinDemo(pos, lastOne);subTasks.add(subTask);subTask.fork();//fork后将开启一个新线程,需要注意性能pos += step+1;//进行下一组}for (ForkJoinDemo forkJoinDemo : subTasks) {sum += forkJoinDemo.join();}}return sum;}public static void main(String[] args) {ForkJoinPool forkJoinPool = new ForkJoinPool();//使用线程池,fork后不会立即开启线程,用于节省系统资源ForkJoinDemo task = new ForkJoinDemo(0L,5000L);ForkJoinTask<Long> result = forkJoinPool.submit(task);Long res;try {res = result.get();//若任务还没结束,将进行等待System.out.println(res);} catch (InterruptedException | ExecutionException e) {e.printStackTrace();}}}
2.JDK并发容器
阅读全文
0 0
- 【Java高并发学习】Fork/Join框架、以及JDK中的高并发容器
- 《Java高并发程序设计》学习 --3.3 JDK的并发容器
- Java并发-Fork/Join框架
- Java并发框架Fork/Join
- Java高并发程序设计笔记(五)之Fork/Join框架
- 【并发】Fork/join框架
- java并发 java7之fork-join框架
- Java并发编程--Fork/Join框架使用
- Java并发基础(九)-Fork/Join框架
- java并发之Fork/Join框架
- Java并发——Fork/Join框架
- Java Fork-Join框架实现并发查找
- Java并发——Fork/Join框架
- 浅谈Java的Fork/Join并发框架
- 浅谈Java的Fork/Join并发框架
- 浅谈Java的Fork/Join并发框架
- Java并发之Fork-Join框架
- Java并发系列6-Fork/Join框架
- 【网安随笔】CTF-writeup -环环相扣的隐写
- python爬虫
- 使用adb命令,离线状态通过USB数据线在手机和PC间传输数据
- Codeforces 768D Jon and Orbs (DP)
- 【Scikit-Learn 中文文档】使用 scikit-learn 介绍机器学习
- 【Java高并发学习】Fork/Join框架、以及JDK中的高并发容器
- Pig编程指南 目录
- The D Programming Language.pdf 英文原版 免费下载
- Java HashMap的工作原理
- Sqli-labs学习第一题
- HDOJ 1015 Safecracker
- 编写函数,分别求两个整数的最大公约数和最小公倍数.
- 使用qt4.8.6新建工程
- 【Scikit-Learn 中文文档】机器学习: scikit-learn 中的设置以及预估对象