
JUC
文章平均质量分 91
java多线程学习
每天都要加油呀!
这些博客是笔者在学习过程中的笔记和心得,如有谬误,望君斧正
展开
-
指令重排序测试&volatile原理学习
文章目录1. 从CPU层面理解指令重排序1.1 鱼罐头加工的故事1.2 指令重排序优化1.3 支持流水线的处理器1.4 指令重排序导致的异常2. volatile原理2.1 保证可见性2.2 保证有序性2.3 指令交错2.4 double-checked locking 问题2.5 double-checked locking 解决2.6 happens-before3. final3.1 设置 final 变量的原理3.2 获取 final 变量的原理附录:流水线期末考试计算大题流水线技术(必考流水线的相原创 2022-05-14 10:26:20 · 639 阅读 · 1 评论 -
Java中的各种锁&显示锁ReentrantLock和AQS学习(深入源码)
文章目录1. 锁的类型&锁的分类1.1 乐观锁1.2 悲观锁1.3 自旋锁1.4 可重入锁(递归锁)1.5 读写锁1.6 公平锁1.7 非公平锁1.8 共享锁1.9 独占锁1.10 重量级锁1.11 轻量级锁1.12 偏向锁1.13 分段锁1.14 互斥锁1.15 同步锁1.16 死锁、活锁、饥饿1.17 锁粗化1.18 锁消除1.19 synchronized1.20 Lock和synchronized的区别1.21 ReentrantLock 和synchronized的区别2. 显示锁Reen原创 2022-05-14 10:20:47 · 564 阅读 · 0 评论 -
死锁、活锁、饥饿&定位死锁&解决死锁
文章目录1. 死锁2. 定位死锁2.1 jstack工具使用2.2 jconsole工具使用:3. 解决死锁3.1 哲学家就餐问题4. 活锁4.1 活锁原因4.2 活锁解决5. 饥饿6. 使用ReentrantLock解决死锁、活锁、饥饿6.1 解决哲学家就餐死锁问题 1. 死锁 死锁:一组互相竞争资源的线程因互相等待,导致“永久”阻塞的现象。 说白了就是:两个线程互相持有对方所需的资源,互不释放且互相等待 t1 线程获得A对象锁,接下来想获取B对象的锁 t2 线程获得B对象锁,接下来想获取A对象的锁原创 2022-05-10 22:48:21 · 1018 阅读 · 0 评论 -
Monitor工作原理&synchronized锁膨胀过程及其优化
文章目录1. Java对象头2. Monitor(锁)3. 从字节码层面分析Monitor4. synchronized——轻量级锁5. synchronized——锁膨胀6. synchronized——自旋优化7. synchronized——偏向锁7.1 偏向状态7.2 撤销 - 调用对象 hashCode7.3 撤销 - 其它线程使用对象7.4 撤销 - 调用 wait/notify7.5 批量重偏向7.6 批量撤销8. synchronized——锁消除9. synchronized——锁粗化 详原创 2022-05-06 20:19:12 · 705 阅读 · 0 评论 -
Unsafe类调用及自定义Atomic原子类
文章目录1. Unsafe类调用2. 自定义Atomic原子类 思维导图: unsafe类功能及使用请看:https://www.jianshu.com/p/db8dce09232d Java和C++语言的一个重要区别就是Java中我们无法直接操作一块内存区域,不能像C++中那样可以自己申请内存和释放内存。Java中的Unsafe类为我们提供了类似C++手动管理内存的能力。 Unsafe类,全限定名是sun.misc.Unsafe,从名字中我们可以看出来这个类对普通程序员来说是“危险”的,一般应用开发者不原创 2022-05-02 19:09:16 · 1173 阅读 · 0 评论 -
java中线程启动过程分析及本地方法 start0源代码的追踪学习
java中线程启动过程分析及本地方法 start0源代码的追踪学习原创 2022-03-11 19:54:45 · 1988 阅读 · 4 评论 -
Java内存模型(JMM)学习一、Java内存模型的抽象结构&指令重排序
Java内存模型(JMM)学习一、Java内存模型的抽象结构&指令重排序原创 2022-03-10 16:35:22 · 351 阅读 · 0 评论