线程池ForkJoinPool

这个线程池还是在《java性能权威指南》上看到的,对它感兴趣的地方是,它能使多个线程“一起”完成一个工作。

别的线程池是,每个线程完成一个工作,一个线程的工作完成了,也不会去帮助其它未完成的工作的线程,去完成它们未完成的工作。


但它的局限性也很大(有点小失望),它是为了配合分治算法而设计的。

什么是分治算法?就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……

直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,

如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)

但不知道可不可以像用redis中的Zset一样使用它,用一个属性进行排序或计算,用计算后的值来取得对象相关数据。。。

看了一些例子,除了分治算法,还可以用作:取得一个路径下文件夹数量,查询一篇文章中某个单词的数量(文章为一个二维数组)


这个线程池的线程,能够帮助其他线程去完成工作的原因是因为,一个小工作窃取的算法。

关于算法的具体介绍和例子,参看http://www.infoq.com/cn/articles/fork-join-introduction


在Java8中,引入了自动并行化代码,这种并行化,就依赖于ForkJoinPool。

1,Arrays类的很多新方法中都会发生。

2,Java8里面的Stream类也有应用。


参考:

分治算法:http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741370.html

关于ForkJoinool:http://www.infoq.com/cn/articles/fork-join-introduction

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值