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;}@Overridepublic String toString() {return "MyTask{" +"n=" + n +'}';}//计算1-n之间整数的和@Overrideprotected Integer compute() {if(n == 1) {//终止条件log.debug("join() {}", n);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/24492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态规划学习(混合背包,有依赖的背包,以及背包思想)

混合背包的定义&#xff1a; 混合背包问题就是混合01背包、完全背包和多重背包&#xff0c;可供选择的物体i可能有一个、或者无数个、或者有限个。 所以&#xff0c;就不要考虑这么多了&#xff0c;直接分这三种情况考虑就行&#xff01;&#xff01; 样例&#xff1a; for(…

CW32F030K8T7单片机在即热式热水器的应用介绍

随着智能家居技术的不断进步&#xff0c;即热式热水器作为现代家庭中的重要组成部分&#xff0c;正逐渐向智能化、节能化方向发展。本方案通过采用武汉芯源半导体的CW32F030系列单片机&#xff0c;以其高性能、超强抗干扰等特性&#xff0c;为即热式热水器的智能化提供了理想的…

Allegro导入DXF文件

阿里狗导入DXF文件 点击File–>Import–>DXF&#xff0c;注意DXF file那边不能使用中文路径和文件名以及非法字符&#xff0c;DXF units一般为mm&#xff0c;结构那边一般都用mm制作图&#xff0c;右边三个选项只需要勾选中间那个&#xff0c;意思是以增加的形式导入&am…

AI图书推荐:这就是ChatGPT

这本书《这就是ChatGPT》&#xff08;What Is ChatGPT Doing ... and Why Does It Work &#xff09;由Stephen Wolfram撰写 全书内容概要如下&#xff1a; **引言与预备知识** - 作者首先表达了对ChatGPT技术突破的兴奋之情&#xff0c;指出这不仅是技术的故事&#xff0c;也是…

FastAPI给docs/配置自有域名的静态资源swagger-ui

如果只是要解决docs页面空白的问题&#xff0c;可先看我的这篇博客&#xff1a;FastAPI访问/docs接口文档显示空白、js/css无法加载_fastapi docs打不开-CSDN博客 以下内容适用于需要以自用域名访问swagger-ui的情况&#xff1a; 1. 准备好swagger-ui的链接&#xff0c;如&am…

【机器学习】专业名词解释 202107090086

数据&#xff1a; 在机器学习中&#xff0c;数据是指机器学习算法的输入和输出。数据可以是各种类型的信息&#xff0c;如文本、图像、音频、视频、传感器数据等。数据在机器学习中扮演着非常重要的角色&#xff0c;因为它是训练模型和进行预测的基础。数据集&#xff1a; 数据…

Vue2工程化

本节目标 工程化开发项目运行流程组件化组件注册自定义创建项目 工程化开发 基于构建工具的环境开发Vue Webpack的缺点 webpack的配置并不简单基础的配置雷同各公司缺乏统一标准 Vue CLI Vue CLI是Vue官方提供的一个全局命令工具帮助我们快速创建标准化的开发环境( 集成了w…

设计模式-设计模式分类

概述 23 种设计模式&#xff0c;分为创建型模式、结构型模式和行为型模式。另外&#xff0c;近来这一清单又增加了一些类别&#xff0c;例如&#xff0c;并发型模式、线程池模式、Java EE 企业技术的多层应用程序上的模式等。 一、创建型模式 1.工厂方法模式(Factory Method…

Tensorflow音频分类

tensorflow https://www.tensorflow.org/lite/examples/audio_classification/overview?hlzh-cn 官方有移动端demo 前端不会 就只能找找有没有java支持 注意版本 注意JDK版本 package com.example.demo17.controller;import org.tensorflow.*; import org.tensorflow.ndarra…

2024年5月文章一览

2024年5月编程人总共更新了7篇文章&#xff1a; 1.2024年4月文章一览 2.《自动机理论、语言和计算导论》阅读笔记&#xff1a;p215-p351 3.《自动机理论、语言和计算导论》阅读笔记&#xff1a;p352-P401 4.《自动机理论、语言和计算导论》阅读笔记&#xff1a;p402-p427 …

05 Linux 内核启动流程

1、阅读 Linux 内核源码 学习 Linux 有两种路线: 1)按照 Linux 启动流程,梳理每个子系统。 2)把 Linux 所有用到的子系统学会,再组合起来。 博主选择第一种方式,可以快速上手,知道自己在学什么东西,在什么阶段起作用。 阅读 Linux 和 Android 源码: https://elix…

2013.8.5-2024.5.10碳排放权交易明细数据

2013.8.5-2024.5.10碳排放权交易明细数据 1、时间&#xff1a;2013.8.5-2024.5.10 2、来源&#xff1a;各碳排放交易所 3、范围&#xff1a;各交易所城市 4、指标&#xff1a;行政区划代码、地区、所属省份、交易日期、交易品种、开盘价_元、最高价_元、最低价_元、成交均价…

列举Spring的IoC和AOP的特点

Spring框架的IoC&#xff08;Inversion of Control&#xff0c;控制反转&#xff09;和AOP&#xff08;Aspect-Oriented Programming&#xff0c;面向切面编程&#xff09;是两个核心特性&#xff0c;它们各自具有显著的特点。 IoC&#xff08;控制反转&#xff09;的特点 解耦…

杂项——编码器控制小车走固定距离(stm32)

先算出轮子转一周编码器的数值&#xff08;假设为1000&#xff09;&#xff0c;再算出轮子一周的周长&#xff08;假设为10cm&#xff09;。 那么要前进1米只需要转1米/10cm等于10圈&#xff0c;10圈编码器数值为10000。 我们只需要在代码里面写出编码器数值如果<10000则让…

nltk下载报错

捣鼓voice_clone时报错&#xff1a; 报错信息&#xff1a; mport nltk nltk.download(‘cmudict’)For more information see: https://www.nltk.org/data.htmlAttempted to load tokenizers/punkt/PY3/english.pickleSearched in: - ‘/home/zhangshuai/nltk_data’ - ‘/hom…

【机器学习基础】Python编程08:五个实用练习题的解析与总结

Python是一种广泛使用的高级编程语言,它在机器学习领域中的重要性主要体现在以下几个方面: 简洁易学:Python语法简洁清晰,易于学习,使得初学者能够快速上手机器学习项目。 丰富的库支持:Python拥有大量的机器学习库,如scikit-learn、TensorFlow、Keras和PyTorch等,这些…

在线OJ项目测试(selenium+Junit5)

目录 在线OJ项目测试的思维导图 在线OJ的UI自动化测试 测试一&#xff1a;检查未登录时的页面访问以及一些未登录时的非法操作 测试二&#xff1a;测试注册界面 测试三&#xff1a;测试登录界面 测试四&#xff1a;测试题目列表界面 测试五&#xff1a;测试题目详情界面…

【python】unindent does not match any outer indentation level错误的解决办法

【Python】"unindent does not match any outer indentation level"错误的解决办法 在Python编程中&#xff0c;缩进是定义代码块的关键。与其它编程语言使用花括号或特定关键字不同&#xff0c;Python完全依赖缩进来区分代码结构。如果你在编码时遇到了错误信息unin…

解释Hibernate框架的作用和与JDBC的区别

Hibernate框架的作用以及它与JDBC&#xff08;Java Database Connectivity&#xff09;的区别可以从以下几个方面来解释&#xff1a; Hibernate框架的作用 Hibernate是一个流行的Java持久层框架&#xff0c;它提供了对象关系映射&#xff08;ORM, Object-Relational Mapping&…

【HashMap】保证HashMap线程安全的几种方式

在Java中&#xff0c;HashMap是线程不安全的&#xff0c;这意味着如果多个线程并发地访问和修改同一个HashMap实例&#xff0c;可能会导致数据不一致和其他线程安全问题。为了确保线程安全性&#xff0c;可以考虑以下几种方法&#xff1a; 1. 使用 Collections.synchronizedMa…