说一下 jdk7 的 ForkJoinPool
2016-09-28 12:12
399 查看
by yinmingjun
网上找了一下 ForkJoinPool 的资料,发现资料不多,看来大多的兄弟还留在 Executors 的坑里没出来。
简单的说,ForkJoinPool 是更好的线程池的技术,主要是面向目前的多线程高并发的场景提供的底层工具,理念和性能上比原来的线程池模式高不少(没测试比较,只是直觉),像scala的promise模式的底层,直接用的就是ForkJoinPool。
下面,简单说一下使用方法:
1、生成一个ForkJoinTask
2、创建 ForkJoinPool 执行 task
就是这么简单。
简单的说一下 ForkJoinPool 的特性:
1、ForkJoinPool的默认构造是根据机器的CPU数量构造线程池的大小的,也就是说一般有一个ForkJoinPool就够了。
2、ForkJoinPool 的 execute 把 task 提交到队列就立即返回
3、按照契约,task 的 get 方法会等待task执行结束,要么带回结果,要么带回异常
4、invoke方法 = execute + get 合体
PS : 当然,既然是 ForkJoinPool,就避免不了去说 task 的 fork 和 join 方法,自己看一下:
语义层面,fork把自己重新调度执行,join 等待 task 结束,和 get 类似。
有时间可以看看JDK的代码,注释很清晰。我个人推荐 ForkJoinPool,毕竟是产生在多核时代的产品,会清晰易用一些。
网上找了一下 ForkJoinPool 的资料,发现资料不多,看来大多的兄弟还留在 Executors 的坑里没出来。
简单的说,ForkJoinPool 是更好的线程池的技术,主要是面向目前的多线程高并发的场景提供的底层工具,理念和性能上比原来的线程池模式高不少(没测试比较,只是直觉),像scala的promise模式的底层,直接用的就是ForkJoinPool。
下面,简单说一下使用方法:
1、生成一个ForkJoinTask
2、创建 ForkJoinPool 执行 task
就是这么简单。
简单的说一下 ForkJoinPool 的特性:
1、ForkJoinPool的默认构造是根据机器的CPU数量构造线程池的大小的,也就是说一般有一个ForkJoinPool就够了。
2、ForkJoinPool 的 execute 把 task 提交到队列就立即返回
3、按照契约,task 的 get 方法会等待task执行结束,要么带回结果,要么带回异常
4、invoke方法 = execute + get 合体
PS : 当然,既然是 ForkJoinPool,就避免不了去说 task 的 fork 和 join 方法,自己看一下:
语义层面,fork把自己重新调度执行,join 等待 task 结束,和 get 类似。
有时间可以看看JDK的代码,注释很清晰。我个人推荐 ForkJoinPool,毕竟是产生在多核时代的产品,会清晰易用一些。
相关文章推荐
- JDK 7新增ForkJoinPool,简单实例
- 自定义 ForkJoinPool
- 关于看完ForkJoinPool和ForkJoinTask文章后一些总结
- Java fork join ForkJoinPool 用法例子
- JDK 7 中的 Fork/Join 模式
- Java多线程之ForkJoinTask,ForkJoinPool介绍及使用
- ForkJoinPool和并行流
- [Java并发编程(二)] 线程池 FixedThreadPool、CachedThreadPool、ForkJoinPool?为后台任务选择合适的 Java executors
- JDK 7 中的 Fork/Join 模式
- JDK 7 中的 Fork/Join 模式
- Fork/join框架之ForkJoinPool
- ForkJoinPool的commonPool相关参数配置
- JUC forkJoinPool
- JDK 7 中的 Fork/Join 模式 轻松实现多核时代的并行计算
- ForkJoinPool
- Java7中的ForkJoin并发框架初探(中)——JDK中实现简要分析
- (四)juc线程高级特性——线程池 / 线程调度 / ForkJoinPool
- Java 多线程任务分解-ForkJoinPool(带返回值)示例
- 线程池ThreadPoolExecutor 和 ForkJoinPool 的分析使用
- ForkJoinPool 使用的错误写法