52.Fork & Join线程池

介绍

jdk1.7之后加入的新的线程池的实现。

实现一种分治的思想。

适用于能够进行任务拆分的cpu密集型运算。

任务拆分

将一个大任务拆分为算法上相同的小任务,直至不能拆分可以直接求解。例如跟递归相关的一些计算,如归并排序、斐波那契数列都可以利用分治的思想。

Fork/Join是在分治的思想上加了多线程。可以把每个任务的分解和合并交给不同的线程来完成。进一步提升了运算效率。

Fork/Join默认会创建于cpu核心数大小相同的线程池。

案例:求1+2+3+...+n的和?

//RecursiveTask 递归任务-有返回值的
//RecursiveAction 递归任务-没有返回值
@Slf4j
class MyTask extends RecursiveTask<Integer> {
    private int n;

    public MyTask(int n) {
        this.n = n;
    }

    @Override
    public String toString() {
        return "MyTask{" +
                "n=" + n +
                '}';
    }

    //计算1-n之间整数的和
    @Override
    protected Integer compute() {
        if(n == 1) {
            //终止条件
            log.debug("join() {}", n);
  

相关推荐

  1. 52.Fork & Join线

    2024-06-08 11:34:04       9 阅读
  2. 51.线大小

    2024-06-08 11:34:04       7 阅读
  3. C-线

    2024-06-08 11:34:04       21 阅读
  4. 线

    2024-06-08 11:34:04       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 11:34:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 11:34:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 11:34:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 11:34:04       20 阅读

热门阅读

  1. Fiddler无法显示捕获到的网络流量的问题处理方法

    2024-06-08 11:34:04       12 阅读
  2. c++处理string类型的工具和常用方法总结

    2024-06-08 11:34:04       8 阅读
  3. 【python脚本】自动化办公处理excel表格

    2024-06-08 11:34:04       11 阅读
  4. AI在芯片设计中的未来

    2024-06-08 11:34:04       9 阅读
  5. mod_aws_transcribe

    2024-06-08 11:34:04       7 阅读
  6. 【大数据架构】基于流式数据的大数据架构升级

    2024-06-08 11:34:04       7 阅读
  7. MakeDown语法详解

    2024-06-08 11:34:04       10 阅读
  8. myEclipse新手使用教程

    2024-06-08 11:34:04       7 阅读
  9. HO-3D 数据集

    2024-06-08 11:34:04       6 阅读
  10. Kafka

    Kafka

    2024-06-08 11:34:04      8 阅读
  11. Vue2学习(05)

    2024-06-08 11:34:04       12 阅读
  12. flutter image_picker 执行拍照的图片怎么保存到本地

    2024-06-08 11:34:04       7 阅读