ForkJoin框架的最佳实现方式

历史背景:

在2001年之前,大部分服务器都是单核的,并不是多核。(虽然ForkJoin的实现思想已经在2001年之前已经出现了),一直到jdk1.7的时候(2011年),才将ForkJoin的是实现代码加入到jdk的juc包中!(源码中的实现逻辑很复杂),因为2011年,多核cpu已经非常普遍了,并行处理有用武之地了!

1、为什么出现ForkJoin框架?

为了充分利用多核cpu的性能,并行处理任务。

2、ForkJoin和ThreadPool之间有什么关系?

ThreadPool和ForkJoin两者互补的关系。

就是有些业务场景用ThreadPool合适,有些业务场景用ForkJoin合适。

例如:实现一个非常大的数组的归并排序,这种场景,使用ForkJoin更加合适(有递归)。如果使用ThreadPool,实现的逻辑就很复杂。

3、如何使用ForkJoin的Api?

4、ForkJoin的最佳实践方式是怎样?

4.1 (不是最佳实践的方式)在任务切分的时候,每切分一个任务,都新建线程去执行,而主线程一直在等待结果返回。主线程的资源就浪费了。

     (最佳实践的方式)在任务切分的时候,一边是用新建的线程去执行,另外一边的任务,都用主线程去执行。充分利用主线这个资源,节省线程数量。

5、总结

2018年写的文章

http://blog.sina.com.cn/s/blog_6f5e71b30102xfou.html

猜你喜欢

转载自www.cnblogs.com/vingLiu/p/12154255.html