您的位置:首页 > 编程语言 > Java开发

说一下 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,毕竟是产生在多核时代的产品,会清晰易用一些。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java ForkJoinPool