并发知识体系大全:贡献一波我平时学习/总结笔记/思维脑图+线程

news2024/11/16 19:49:12

这个世界都是并发的,编程里更是这样,俗话说:并发知识大,一口吃不下。想成为一名优秀的 Java 开发,学好并发,绝对是你走入高薪行列的必备能力之一。

并发涉及的知识点,其实十分琐碎。学完记不住,记住了用不对。在并发底层原理中,不仅涉及 Java 语言,更涉及 JVM、操作系统、内存、CPU 指令等,令人一头雾水。

这份笔记+学习脑图可以帮你系统地学习Java 并发编程知识,并告别碎片化获取知识的弊端。

帮你建立起知识脉络。让每一个工具类,成为你并发知识体系中的一块块“拼图”。在这里我将这份笔记进行一个开源形式的分享,大体内容有这些:

线程

  • 线程的启动

  • 实现Runnab1e接口

  • 继承Thread类

  • 实现Callable接口

  • 线程的状态

  • 线程的方法

  • 线程的优先级

  • 守护线程

  • 未捕获异常处理器

并发编程的问题

  • 线程引入开销:上下文切换与内存同步

  • 线程安全性(原子性+可见性)

  • 死锁

线程间通信/线程同步 工具使用

  • synchronized

  • Lock

  • volatile

  • Atomic

Lock使用 深入

  • 可重入锁 ReentrantLock

  • Condition与wait¬ify区别

  • await&signal

  • 公平锁

  • 读写锁 ReentrantReadWriteLock

  • LockSupport(锁住的是线程,synchronized锁住的是对象)

  • synchronized与Lock的区别

  • 原子操作类使用

Java内存模型 线程同步工具原理

  • JMM抽象结构

  • 指令重排序

  • 内存屏障

  • happens-before(抽象概念,基于内存屏障)

  • 顺序一致性

  • volatile原理

  • synchronized原理

  • 原子操作原理

  • 锁的比较

  • 锁的优化

  • 锁的分类

  • 偏向锁(只有一个线程进入临界区)

  • 轻量级锁(多个线程交替进入临界区)

  • 重量级锁(多个线程同时进入临界区)

  • CPU如何实现原子操作

  • Java如何实现原子操作

  • CAS在OpenJDK中的实现

同步容器

  • ConcurrentHashMap

  • CopyOnWriteArrayList

  • BlockingQueue

  • ThreadLocal

同步工具使用

  • Semaphore (信号量)

  • Cycli eBarrier (可循环使用的屏障/栅栏)

  • Exchanger (两个线程交换数据)

  • CountDownLatch (闭锁)

  • FutureTask (Future实现类)

  • 将批量同步操作转为异步操作(并行流/CompletableFuture)

  • 多个异步任务合并

  • API

线程池使用

  • 引入原因

  • 继承体系

  • ExecutorService

  • ScheduledExecutorService

  • ThreadPoolExecutor

  • 创建线程池

  • 线程动态变化

  • 扩展ThreadPoolExecutor

  • ScheduledThreadPoolExecutor

  • Executors

  • CompletionService

J.U.C 源码解析

  • AQS的接口

  • AQS使用实例(互斥锁,tryAcquire只需一次CAS)

  • AQS实现

  • 同步队列

  • 独占式同步状态

  • 共享式同步状态

  • 独占式超时获取同步状态

  • ReentrantLock公平锁

  • ReentrantReadWriteLock

  • 读写状态的设计

  • 写锁的获取与释放

  • 读锁的获取与释放(放弃)

  • 锁降级

  • LockSupport

  • Condition

  • 等待队列

  • AtomicInteger

  • ThreadPoolExeuctor

  • 状态转换

  • 成员变量

  • 构造方法

  • 执行任务

并发体系思维导图

Java内存模型(JMM)

  • 线程通信机制

  • 内存模型

  • synchronized

  • volatile

  • DCL

并发基础

  • AQS

  • CAS

  • ReentrantLock

  • ReentrantReadWriteLock

  • Condition

**并发工具类

  • CyclicBarrier

  • CountDownLatch

  • Semaphore

  • Exchanger

其他

  • ThreadLocal

  • Fork/Join

Java并发集合

  • ConcurrentHashMap

  • ConcurrentLinkedQueue

  • Concurr entSkipListMap

  • ConcurrentSkipListSet

atomic

  • 基本类型类

  • 数组

  • 引用类型

  • 字段类

阻塞队列

  • ArrayBlockingQueue

  • LinkedBlockingQueue

  • PriorityBlockingQueue

  • DelayQueue

  • SynchronousQueue

  • LinkedTransferQueue

  • LinkedBlockingDeque

线程池

  • Executor

  • Future

很多程序员,整天沉浸在业务代码的 CRUD 中,业务中没有大量数据做并发,缺少实战经验,对并发仅仅停留在了解,做不到精通,所以总是与大厂擦肩而过。

我把私藏的这套并发体系的笔记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花时间用心学完这些,一定可以快速掌握并发编程。

不管是查缺补漏还是深度学习都能有非常不错的成效,需要的话可以点击下方的名片自取!!!

 

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

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

相关文章

2022圣诞代码(圣诞树+圣诞老人)

文章目录前言使用方法圣诞树圣诞老人前言 圣诞节里的喜悦,飘扬万里;圣诞树上的星星,璀璨耀眼;圣诞星空绽放的烟花,迎来吉祥;圣诞钟声奏响的旋律,传递欢乐;圣诞老人送给你的礼物&…

数据结构---位图算法

位图算法将数据存储到位图中查询数据是否在位图中JAVA代码问题扩展这里所说的位图并不是像素图片的位图&#xff0c;而是内存中连续的二进制位&#xff08;bit&#xff09;所组成的数据结构&#xff0c; 该算法主要用于对大量整数做去重和查询操作。System.out.println(1L <…

地质灾害安全监测预警解决方案

一、方案背景 我国地质和地理环境复杂&#xff0c;气候条件时空差异大&#xff0c;地质灾害种类多、分布广、危害大&#xff0c;是世界上地质灾害最严重的国家之一。地质灾害来源于自然和人为作用下对地质环境的灾难性后果&#xff0c;主要包括崩塌、滑坡、泥石流、地面塌陷和…

RV1126笔记十六:吸烟行为检测及部署<三>

若该文为原创文章,转载请注明原文出处。 训练并测试(windows) 一、yolov5安装 1、下载rk优化后的yolov5 git clone https://github.com/airockchip/yolov5.git 下载后,我是放到E:\miniconda3\envs目录下,miniconda3是安装miniconda的目录。可以放到其他地方,后续操作需要…

语音处理的算法和方法研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Python pandas库|任凭弱水三千,我只取一瓢饮(7)

上一篇链接&#xff1a; Python pandas库&#xff5c;任凭弱水三千&#xff0c;我只取一瓢饮&#xff08;6&#xff09;_Hann Yang的博客-CSDN博客 to_系列函数&#xff1a;22个 &#xff08;12~22&#xff09; Function12 to_numpy(self, dtype: NpDtype | None None, co…

《网线制作》

前言&#xff1a; 随着计算机的快速发展&#xff0c; 现代 社会人们已经离不开网络&#xff0c;网络拉近了人们的距离&#xff0c;给人们提供了一个无需面对面就能够进行交流的平台&#xff0c;如今&#xff0c;网络已经渗透到生活的方方面面&#xff0c;购物、聊天、谈工作等…

【图卷积网络和知识提取】

When Pansharpening Meets Graph Convolution Network and Knowledge Distillation &#xff08;当全色锐化遇到图卷积网络和知识提取时&#xff09; 空洞卷积(Dilated/Atrous Convolution) 在本文中&#xff0c;我们提出了一种新颖的用于全色锐化的图卷积网络&#xff08;gra…

7. 表现层数据封装

表现层数据封装[TOC](表现层数据封装)1. 表现层响应数据的问题2. 定义ResponseResults类封装响应结果3. 定义Code类封装响应码4. 表现层数据封装返回Result对象5.postman发送请求结果1. 表现层响应数据的问题 ​ 目前表现层增删改方法返回true或者false表示是否成功&#xff0…

Kubernetes网络自学系列 | 网络虚拟化基石:network namespace

素材来源&#xff1a;《Kubernetes网络权威指南》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;Kubernetes网络自学系列 | 汇总_COCOgsta的博客-CSDN博客 1.1 网络虚拟化基石&#xff1a;netw…

【Pandas入门教程】如何计算汇总统计数据

如何计算汇总统计数据 来源&#xff1a;Pandas官网&#xff1a;https://pandas.pydata.org/docs/getting_started/intro_tutorials/index.html 笔记托管&#xff1a;https://gitee.com/DingJiaxiong/machine-learning-study 文章目录如何计算汇总统计数据导包数据准备【1】如何…

【学习Seata1.6源码#03】TC 集群具有高可用架构的秘密

一、背景 TC 集群具有高可用架构&#xff0c;应用到集群是这样一个间接的关系&#xff1a;应用 -》事务分组 -》TC 集群&#xff0c;应用启动后所指定的事务分组不能变&#xff0c;可通过配置中心变更事务分组所属的 TC 集群&#xff0c;Seata 客户端监听到这个变更后&#xf…

TIA博途中进行积分运算的具体方法

TIA博途中进行积分运算的具体方法 如下图所示,积分是对给定函数曲线的面积进行数学计算。但是实际曲线往往没有明确的数学关系,而是随时间变化的模拟量。积分计算就是把所有由两个过程值与时间所围成的梯形区域面积相加,梯形面积等于两个过程值的平均值乘以时间间隔。 如下…

MAC 下编译调试 MySQL8.0 源码

MAC 下编译调试 MySQL8.0 源码 最近遇到几个关于 MySQL 死锁的问题&#xff0c;但是查看网上的资料发现并不能解决我遇到的问题&#xff0c;于是决定从源码寻找答案&#xff0c;所以在这里记录一下自己编译 MySQL 源码的过程。 环境配置如下&#xff1a; macOS Ventura 版本 1…

达势股份IPO前紧急叫停:年内已有多家公司急刹车,王怡为董事长

又一家准上市公司在IPO前紧急叫停。 近日&#xff0c;达美乐比萨&#xff08;Domino’s Pizza&#xff0c;NYSE:DPZ&#xff09;在中国的运营商——达势股份&#xff08;DPC Dash Ltd&#xff0c;HK:01405&#xff09;发布《延迟全球发售及退回香港公开发售的申请股款》&#…

箭头函数的使用

一、什么是箭头函数 从 ES6 开始支持箭头函数&#xff0c;它是一种新的函数表达方式&#xff0c;可以在某些情况下使函数的使用更加的简洁。 二、箭头函数的使用 1、单个参数的使用 例&#xff1a; var f v > v;// 等同于var f function (v) {return v;};2、如果箭头函…

upload-labs(writeup)

pass1 前端验证&#xff0c;使用bp抓包改后缀 pass2 验证MIME类型&#xff0c;使用bp抓包&#xff0c;更改Content-Type 即可 pass3 黑名单限制&#xff0c;可以上传 .php3 .php5 .pthml 等等后缀&#xff0c; 但是要在phpstydy配置文件中更改&#xff0c;&#xff08;我使…

网络编程 基于tcp/ip协议的C/S模型

1.socket编程的一些概念 socket作用&#xff1a;运行在计算机中的两个程序通过socket建立起一个通道&#xff0c;数据在通道中传输。socket提供了流(stream)&#xff0c;是基于TCP协议&#xff0c;是一个有序、可靠、双向字节流的通道&#xff0c;传输数据不会丢失、不会重复、…

C#中的String和StringBuilder

一&#xff1a;前言 String和StringBuilder都是引用类型 StringBuilder是可变的字符串&#xff0c;它不会创建当前字符串的新修改实例而是在现有字符串对象中进行修改 String是不可变字符串&#xff0c;一旦被初始化后就不能改变其内容&#xff0c;String值改变的过程其实是创…

如何自定义注解

在 Spring Boot 应用中&#xff0c;使用自定义注解时需要用到 AOP&#xff0c;因此引入 AOP 相关依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependenc…