湛江网站建设保定公司/制作网页设计公司
参考资料:
JAVA并发专题 - 终有救赎的专栏 - 掘金
Java并发编程学习路线(建议收藏��) | Java程序员进阶之路x沉默王二
面试题目:
JUC第一讲:Java并发知识体系详解 + 面试题汇总(P6熟练 P7精通)-阿里云开发者社区
-
练气篇 内存模型
第一章 CPU多级缓存模型
1.什么是CPU多级缓存模型?小陈:老王,最近学习并发不知如何入手,看的知识很零散;没多久又记不住了,你有啥好建议吗? - 掘金
-
第二章 CPU 缓存一致性MESI
4.什么是MESI缓存一致性协议?怎么解决并发的可见性问题?MESI一致性协议 小陈:老王,上一章你让我看看MESI一致 - 掘金
-
第三章 JMM模型
2.什么是JAVA内存模型?为什么要设计JAVA内存模型? 小陈:老王,看了上一篇的《CPU多级缓存模型》,有个疑问为什 - 掘金
第四章 JMM一致性的实现
1.内存可见性
2.禁止指令重排序
6.什么是内存屏障?具有什么作用?什么是内存屏障? 小陈:老王,上一篇你引出了volatile底层是通过内存屏障来解决可 - 掘金
-
筑基篇 volatile、synchronized
第五章 内存可见性、指令重排、原子性
内存可见性
- 指令重排
- 原子性
3.线程安全之可见性、有序性、原子性是什么?小陈:上一篇说了JAVA内存模型,但是后面说了在多线程并发操作的时候有可见性 - 掘金
第六章 Volatile的三性实现
- 内存可见性
2.指令重排
7.volatile怎么通过内存屏障保证可见性和有序性?volatile通过内存屏障保证可见性 小陈:老王,你上一篇抛出 - 掘金
第七章 Synchronized的基本用法
1.锁加在静态对象上
2.锁加在实例对象上
3.锁在同一实例对象上才互斥,monitorenter申请锁,nonitorexit释放锁。
9.synchronized 是个啥东西?应该怎么使用?synchronized 是什么? 老王:小陈,从今天开始我们就 - 掘金
第八章 Synchronized的底层实现
- 对象头
2.Mark word
10.对象头、Mark Word、monitor、synchronized怎么关联起来?老王:开讲啦,开讲啦,小陈快来上 - 掘金
3.锁的升级
12.synchronized的锁重入、锁消除、锁升级原理?无锁、偏向锁、轻量级锁、自旋、重量级锁小陈:呼叫老王.... - 掘金
第九章 Synchronized的三性实现
1.内存可见性
2.指令重排
3.原子性实现
13.synchronized总结:怎么保证可见性、有序性、原子性?synchronized的原子性 通过前面的篇章我们 - 掘金
结丹篇 CAS
第十章 Unsafe类基本操作
- 分配和回收对外内存
- 直接访问内存地址上的数据
- CAS操作
- 挂起和唤醒线程
- 读障碍器、写障碍器、全障碍器
14.JDK底层Unsafe类是个啥东西?老王:小陈啊,从今天开始我们就要进入 《结丹篇》 了,在这一篇章里面,要注意听 - 掘金
第十一章 CAS的原子性
- 加偏向锁或者轻量级锁
- 通知总线独占
15.unsafe类的CAS是怎么保证原子性的?老王:小陈啊,上一章我们讲了usafe是个啥东西,以及unsafe提供的 - 掘金
第十二章 AtomicBoolean、AtomicInteger、AtomicLong
- volatile & CAS
- 适用于并发较轻的情况
17.AtomicInteger、AtomicBoolean的底层原理小陈:老王啊,今天就要开始Atomic原子类的学习 - 掘金
第十三章 LongAdder
1.当并发较重的情况下,while循环自旋会很浪费时间。
2.使用分段锁方式来提高并发。
19.Atomic系列之LongAdder的底层原理(分段锁提升并发性能)老王:小陈啊,上一章我们讲解了cas的缺陷,无 - 掘金
第十四章 AtomicReference、AtomicStampedReference
- AtomicReference解决同时需要更新多个变量的问题
- AtomicStampedReference解决ABA问题
18.AtomicReference、AtomicStampReference底层原理。多个变量更新怎么保证原子性?CAS的ABA问题怎么解决? - 掘金
-
元婴篇 并发锁与框架
第十五章 AQS基础框架
AbstractQueueSynchronizer
tryLock()
tryRelease()
getState()
setState()
Enq()
addWaiter()
Park
Unpark()
Java高级面试必问:AQS 到底是什么? - 知乎
第十六章 ReentrantLock
深入理解Java并发重入锁ReentrantLock | 二哥的Java进阶之路
Volatile +CAS 实现线程互斥访问
关键字 | 使用方式 | 公平性 | 排队队列 | 性能比较 | 实现方式 |
lock | 显示加锁和释放锁 | 非公平锁、公平锁 | 可在多个condition队列上等待 | 大部分情况下比synchronized优 | Volatile+CAS |
synchronized | 使用关键字修饰方法、方法块 | 非公平锁 | 只能在单个队列上等待 | 在JDK1.6 JVM对synchronized关键字优化后,性能基本接近 | Monitor |
第十七章 ReadWriteLock
深入理解Java并发读写锁ReentrantReadWriteLock | 二哥的Java进阶之路
Int state,高位表示读锁数量,低位表示写锁数量。
读锁:持有读锁时,其他线程可继续获取读锁,不可获取写锁。
写锁:持有写锁时,其他线程不可获取读锁,也不可获取写锁。
锁降级
锁降级:是指在获取写锁后,再获取读锁,然后释放写锁,释放读锁。
解决问题:解决某线程写入数据后,接着读取该数据,可能不一致的问题。
第十八章 线程间的通信
Object
wait(), notify(), notifyAll()
使用案例:生产者与消费者1,不能精确通知条件
从根上理解生产者-消费者模式 | 二哥的Java进阶之路
Condition
await(), signal(), signalAll()
使用案例:生产者与消费者2,可精确通知条件里的一个线程
详解 Java Condition 的 await 和 signal 等待通知机制 | 二哥的Java进阶之路
LockSupport
park(), unpark(Thread t)
使用案例:ABC打印问题,可精准通知线程
深入理解Java并发线程阻塞唤醒类LockSupport | 二哥的Java进阶之路
第十九章 框架通信类
Semphore
Exchanger
CountDownLatch
CyclicBarrier
Java并发编程通信工具类 Semaphore、Exchanger、CountDownLatch、CyclicBarrier、Phaser等一网打尽 | 二哥的Java进阶之路
- 化神篇 并发容器
基础容器
第二十章 CopyOnWriteArrayList
底层实现:写的时候拷贝数据到新数组,然后设置到新的数组引用。
使用场景:读多写少。
CopyOnWriteArrayList实现原理及源码分析-腾讯云开发者社区-腾讯云
第二十一章 ConcurrentLinkedList
底层实现:lock
吊打面试官之Java ConcurrentLinkedQueue | 二哥的Java进阶之路
第二十二章 ConcurrentHashMap
底层实现:1.7 segement 分段锁 1.8 CAS+synchronized
吊打Java面试官之ConcurrentHashMap(线程安全的哈希表) | 二哥的Java进阶之路
BlockingQueue
第二十三章 ArrayBlockingQueue
一把锁,两个等待队列。
第二十四章 LinkedBlockingQueue
两把锁,两个等待队列。
源码深入解析BlockingQueue | 二哥的Java进阶之路
第二十五章 PriorityBlockingQueue
小顶堆取优先级最小的出队列。
PriorityBlockingQueue详解 - 忧愁的chafry - 博客园
第二十六章 SynchronousQueue
作用:放入的线程全部等待消费线程来取(可同时多个线程),事件的及时传递。
底层:非公平通过Stack来实现,公平通过队列来实现。
源码解析Synchronous Queue 这种特立独行的队列 - 知乎
特殊容器
第二十七章 ThreadLocal
一个线程的threadLocalMap可以有多个threadLocal做weak reference key,来保持不同的对象。
ThreadLocal
set(Object value)
Get()
Remove() 不使用的时候记得显式清除。
5000字10张图讲清楚本地变量ThreadLocal | 二哥的Java进阶之路
- 飞升篇 线程池
第二十八章 ThreadPoolExecutor
- 小于coreThread,新建线程;
- 大于coreThread, 放入等待队列;
- 小于maxThread,新建线程;
- 大于maxThread,启用拒绝策略。
newFixed coreThread ==maxThread, LinkedBlockingQueue 队列无界容易内存溢出
newCached coreThread,Integer.MAX_VALUE, SynchronousQueue 队列无界,效率不高
24张图带你彻底弄懂 Java 线程池 | 二哥的Java进阶之路
第二十九章 ScheduledThreadPoolExecutor
fixedRate 每五分钟一次
fixedDelay 每隔五分一次
深入剖析Java定时任务ScheduledThreadPoolExecutor | 二哥的Java进阶之路
第三十章 ForkJoinPool
ForkJoinPool
深入理解Java并发编程之Fork/Join框架 | 二哥的Java进阶之路
相关文章:

Java 并发编程学习笔记
参考资料: JAVA并发专题 - 终有救赎的专栏 - 掘金 Java并发编程学习路线(建议收藏��) | Java程序员进阶之路x沉默王二 面试题目: JUC第一讲:Java并发知识体系详解 面试题汇总(P6熟练 P7精通…...

【SpringMVC】——Cookie和Session机制
阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:实践 1:获取URL中的参数 (1)PathVariable 2&…...

[产品管理-60]:产品的情感化设计与常用工具:感性工学、情感分析、神经网络法、微软反应卡、突发情绪法
目录 一、概述 1、情感化设计的三个层次 2、情感化设计在产品中的应用 3、情感化设计的案例 4、情感化设计的意义 二、常见工具 1、感性工学 (情商) 2、情感分析 3、神经网络法 4、微软反应卡 5、突发情绪法 一、概述 产品的情感化设计是一种…...

uniapp 小程序 周选择器
这里贴出来的是子组件的代码,父组件只是打开了一下popup // 打开了一下popup $refs.popup.open(bottom)如果不想用子组件的话,直接打开popup就可以用<template><uni-popup ref"popup" type"bottom" background-color&quo…...

Android笔记(三十二):封装一个毫秒级别倒计时View
效果 倒计时View视频 背景 业务场景需要显示带有毫秒级别的倒计时,于是自己封装一个通用的倒计时组件 源码分析 核心倒计时逻辑,主要是每隔100毫秒计算一次从开始倒计时到现在的剩余时间,并通过process接口返回出去Handler每次设置100毫秒…...

[产品管理-60]:马斯洛需求层次与产品的情感化设计
目录 一、概述 1、马斯洛需求层次理论概述 2、产品情感化设计与马斯洛需求层次的关系 3、产品情感化设计的实践案例 二、马斯洛需求层次与用户情感程度(本能、行为、反思)的关系 1、马斯洛需求层次与用户情感程度概述 2、马斯洛需求层次与用户情感…...

Python接口自动化测试自学指南(项目实战)
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 接口自动化测试是指通过编写程序来模拟用户的行为,对接口进行自动化测试。Python是一种流行的编程语言,它在接口自动化测试中得到了广…...

ESLint 使用教程(三):12个ESLint 配置项功能与使用方式详解
前言 在现代前端开发中,代码质量与一致性是至关重要的,ESLint 正是为此而生的一款强大工具,本文将带您详细了解 ESLint 的配置文件,并通过通俗易懂的方式讲解其主要配置项及其配置方法。此外,我们还将探讨一些高级配置…...

如何将 EDB 文件导入 Ansys HFSS 和 Ansys Q3D
EDB 文件包含有关印刷电路板 (PCB) 的基本数据,包括其布局、组件、连接性和电磁属性。将 EDB 文件导入 Ansys 工具是利用仿真和分析功能设计高效、可靠和高性能电子系统的关键步骤。在这里,我将向您展示如何将 EDB 文件导入 Ansys…...

HbuildderX运行到手机或模拟器的Android App基座识别不到设备 mac
寻找模拟器 背景: 运行的是h5,模拟器是网易MuMu。 首先检查一下是否配置dab环境,adb version 配置一下hbuilderX的adb: 将命令输出的路径配置到hbuilderx里面去,然后重启下HbuilderX。 开始安装基座…一直安装不…...

智慧流控 力行天地 | 同元软控受邀参加第十三届全国流体传动与控制学术会议
2024年10月27日-30日,由中国机械工程学会流体传动与控制分会主办的第十三届全国流体传动与控制学术会议在秦皇岛召开。大会以“智慧流控 力行天地”为主题,来自全国高校、科研院所及企事业单位的专家学者出席本次会议。 大会围绕工程应用、新型流控元件、…...

Python日志分析与故障定位
Python日志分析与故障定位 目录 📊 分布式系统日志分析:ELK Stack与Fluentd⚡ 实时日志流处理与异常检测🐍 使用Python分析并处理海量日志数据🚨 自动化故障检测与报警系统🔍 故障根因分析(Root Cause An…...

w029基于springboot的网上购物商城系统研发
🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文件࿰…...

Uniapp全局文件执行顺序详解
Uniapp全局文件执行顺序详解 在Uni-App项目中,全局文件的执行顺序对于深入理解应用的启动和初始化流程至关重要。本文将详细阐述这些文件的执行顺序,并提供相应的示例代码,以便开发者更好地理解和应用。 1. index.html 文件描述࿱…...

车企死亡加速,买车看好这三条线
文 | AUTO芯球 作者 | 雷慢 真不是我危言耸听, 新能源车是真不能随便买啊, 就在这几天,哪吒被传出要裁员70%, 多少车主,多少员工和家庭要失眠了, 哪吒也回应了,说没有裁员,只是精…...

SpringClud一站式学习之Eureka服务治理(二)
SpringClud一站式学习之Eureka服务治理 引言1. 搭建Eureka Server1.1. 添加Eureka Server依赖1.2. 添加 Eureka Server注解1.3. 配置Eureka Server1.4. 运行Eureka Server 2. 搭建Eureka Client 服务提供者2.1. 添加依赖2.2. 添加注解2.3. 配置Eureka Client2.4. 启动服务 3. 搭…...

空间解析几何【上】
文章目录 两向量共线&三向量共面线段定比分点内积&外积&混合积内积(点积)外积(叉积)几何性质混合积轮换对称性对换改变一次符号线性性质几何性质球面方程特点空间平面参数方程行列式方程(点位式)向量式方程三点式方程行列式方程点法式一般式截距式法式方程离…...

Python 获取PDF的各种页面信息(页数、页面尺寸、旋转角度、页面方向等)
目录 安装所需库 Python获取PDF页数 Python获取PDF页面尺寸 Python获取PDF页面旋转角度 Python获取PDF页面方向 Python获取PDF页面标签 Python获取PDF页面边框信息 了解PDF页面信息对于有效处理、编辑和管理PDF文件至关重要。PDF文件通常包含多个页面,每个页…...

独孤思维:曾经副业赚大钱的人,怎么不见了
01 总有一双眼睛默默关注你。 别以为自己每天做项目,日更文章,没人看。 总会有人默默观察你。 看你能坚持多久,看多段时间,你是不是还在。 今天上午,有个2年前认识的副业同行,今天突然跟我发消息。 说…...

OpenGL 异常处理-glCreateShader失败
【1】glCreateShader创建顶点着色器时候报错,如下 【2】原因分析 初始化失败,你使用一个扩extension loader library来访问现代OpenGL,当需要初始化它时,加载器需要一个当前的上下文来加载 【3】解决办法 GLenum glew_err gle…...

【el-pagination的使用及修改分页组件的整体大小修改默认样式的宽度详细教程】
今天遇到个bug,使用element-puls中的分页的时候,长度会超出盒子,今天教大家如何修改el-pagination的宽度,以及修改分页组件的整体大小 直接修改 style"width: 100%; margin-top: 10px"不生效 控制台修改el-pagination…...

Uniapp的学习
uniapp的内容和vue网页开发会有很多区别,但是都是基于vue开发的,大多数业务还是在vue打交道,但是这些uniapp的特殊的知识点也是要掌握好的。 基本配置 创建uniapp项目 npx degit dcloudio/uni-preset-vue#vite-ts 项目名 :用于…...

C#-万物之父object、装箱拆箱
万物之父:object 基于里氏替换原则,可以用object容器装载一切类型的变量。可以用来表示不确定类型,作为函数参数类型 object是所有类型的基类 装箱拆箱 用object存值类型(装箱)→ 把值类型用引用类型存储,…...

AI大模型重塑软件开发流程:从自动化编码到智能协作的未来展望
目录 1. 引言:AI大模型的崛起与软件开发的变革 1.1 AI大模型的兴起与发展背景 1.2 软件开发的现状与痛点 1.3 AI大模型如何解决这些问题 2. AI大模型的工作原理与技术背景 2.1 什么是AI大模型? 2.2 深度学习与自然语言处理技术的演变 2.3 大模型…...

HTB:GreenHorn[WriteUP]
目录 连接至HTB服务器并启动靶机 使用nmap对靶机TCP端口进行开放扫描 再次使用nmap对这三个端口进行脚本、服务扫描 尝试先通过curl访问靶机80端口 将靶机IP与该域名写入hosts使DNS本地解析 使用浏览器访问greenhorn.htb 使用Wappalyzer插件查看该页面技术栈 尝试在sea…...

SelfAttention在Ascend上的实现
1 SelfAttention是什么? Self-Attention(自注意力)机制是深度学习领域的一种重要技术,尤其在自然语言处理(NLP)任务中得到广泛应用。它是 Transformer 架构的核心组成部分之一,由 Vaswani 等人…...

C#设计模式
文章目录 项目地址一、开放封闭原则1.1 不好的版本1.2 将BankProcess的实现改为接口1.3 修改BankStuff类和IBankClient类二、依赖倒置原则2.1 高层不应该依赖于低层模块2.1.1 不好的例子2.1.2 修改:将各个国家的歌曲抽象2.2 抽象不应该依于细节2.2.1 不同的人开不同的车(接口…...

仪表板展示|DataEase看中国:历年双十一电商销售数据分析
背景介绍 2024年“双十一”购物季正在火热进行中。自2009年首次推出至今,“双十一”已经成为中国乃至全球最大的购物狂欢节,并且延伸到了全球范围内的电子商务平台。随着人们消费水平的提升以及电子商务的普及,线上销售模式也逐渐呈现多元化…...

急着骂华为?我劝你别急
文 | AUTO芯球 作者 | 雷慢 赛力斯这下怒了! 要对那些华为黑、问界黑出手了, 就在这几天,赛力斯起诉了一批蓄意抹黑、散步虚假信息的人。 起因是什么,听我慢慢说, 今年7月,佛山一辆问界M7发生交通事故…...

虚拟机linux7.9下安装mysql
1.MySQL官网下载安装包: MySQL :: Download MySQL Community Server https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 2.解压文件: #tar xvzf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 3.移动文件&#…...