
并发编程&JVM
文章平均质量分 96
java后端提高篇之并发编程
ΘLLΘ
ΘLLΘ的博客!
展开
-
【并发编程】(学习笔记-共享模型之JUC-读写锁原理)-part6
文章目录读写锁1.ReentrantReadWriteLock1.1 概述1.2 原理演示t1 w.lock,t2 r.lockt3 r.lock,t4 w.lockt1 w.unlockt2 r.unlock,t3 r.unlock2.StampedLock2.1 概述2.例子读写锁1.ReentrantReadWriteLock1.1 概述当读操作远远高于写操作时,这时候使用读写锁 让 读-读 可以并发,提高性能。 类似于数据库中的 select ... from ... lock in sha原创 2022-01-15 12:45:45 · 717 阅读 · 4 评论 -
【并发编程】(学习笔记-共享模型之JUC-ReentrantLock原理)-part6
文章目录ReentrantLock原理1.非公平锁实现原理2.可重入原理3.可打断原理3.1 不可打断模式3.2 可打断模式4.公平锁实现原理5.条件变量实现原理5.1 await 流程5.2 signal 流程ReentrantLock原理1.非公平锁实现原理先从构造器开始看,默认为非公平锁实现://默认非公平锁public ReentrantLock() { sync = new NonfairSync();}NonfairSync 继承自 AQS。没有竞争时:第一个竞争出原创 2022-01-14 14:06:01 · 815 阅读 · 1 评论 -
【并发编程】(学习笔记-共享模型之内存)-part4
文章目录并发编程-4-共享模型之内存1.Java内存模型2.可见性2-1 退不出的循环2-2 可见性vs原子性3.有序性3-1 诡异的结果3-2 解决方法3-3 有序性理解3-4 happens-before4.volatile 原理4-1 如何保证可见性4-2 如何保证有序性4-3 double-checked locking 问题并发编程-4-共享模型之内存本文章视频指路????黑马程序员-并发编程1.Java内存模型JMM 即 Java Memory Model,它定义了主存(共享内存)、工作原创 2021-11-05 09:19:49 · 595 阅读 · 14 评论 -
【并发编程】(学习笔记-共享模型之无锁)-part5
文章目录并发编程-5-共享模型之无锁1.无锁解决线程安全问题2.CAS 与 volatile2-1 CAS2-2 volatile2-3 为什么无锁效率高2-4 CAS特点3.原子整数4.原子引用4-1 原子引用的使用4-2 ABA 问题及解决5.原子数组6.字段更新器7.原子累加器8.LongAdder详解8-1 cas 锁8-2 原理之伪共享9.Unsafe9-1 概述9-2 Unsafe CAS 操作并发编程-5-共享模型之无锁本文章视频指路????黑马程序员-并发编程1.无锁解决线程安全问题原创 2021-11-05 08:45:05 · 590 阅读 · 10 评论 -
【并发编程】(学习笔记-共享模型之管程)-part3
文章目录并发编程-共享模型之管程-31.共享带来的问题1-1 临界区 Critical Section1-2 竞态条件 Race Condition2.synchronized 解决方案2-1 解决方案2-2 synchronized 的使用2-3 方法上的synchronized3.变量的线程安全分析3-1 成员变量和静态变量是否线程安全?3-2 局部变量是否线程安全?3-3 常见线程安全类3-4 实例分析4.Monitor4-1 Java对象头4-2 原理之Monitor5.Synchronized原理原创 2021-11-02 08:40:45 · 754 阅读 · 5 评论 -
【并发编程】(学习笔记-Java线程)-part2
文章目录并发编程-Java线程-21.创建和运行线程1-1 方法一:直接使用Thread1-2 方法二:使用Runnable配合Thread1-3 方法三:FutureTask配合Thread2.观察多个线程同时运行3.查看进程线程的方法4.原理之线程运行5.常用方法5-1 start与run5-2 sleep与yield5-3 join方法详解5-4 interrupt方法详解5-5 不推荐的打断方法6.主线程和守护线程7.线程的状态7-1 五种状态7-2 六种状态并发编程-Java线程-2本文章视频原创 2021-10-27 21:55:59 · 748 阅读 · 4 评论 -
【JVM】类加载与字节码技术
文章目录JVM-类加载与字节码技术1.类文件结构1-1 魔数1-2 版本1-3 常量池2.字节码指令2-1 javap工具2-2 图解方法执行流程(1)原始 Java 代码(2)编译后的字节码文件(3)常量池载入运行时常量池(4)方法字节码载入方法区(5)main 线程开始运行,分配栈帧内存(6)执行引擎开始执行字节码2-3 练习-判断结果2-4 构造方法(1)cinit()V(2)init()V2-5 方法调用2-6 多态的原理2-7 异常处理(1)try-catch(2)多个 single-catch原创 2021-10-18 13:49:46 · 2321 阅读 · 8 评论 -
【JVM】JMM内存模型
文章目录JVM-内存模型1. 原子性1-1 问题解析1-2 解决方法(1)synchronized(同步关键字)2.可见性2-1 退不出的循环2-2 解决办法(1)volatile(易变关键字)3.有序性3-1 诡异的结果3-2 解决方法3-3 有序性理解3-4 happens-before4.CAS与原子类4-1 CAS4-2 乐观锁与悲观锁4-3 原子操作类5.synchronized 优化5-1 轻量级锁5-2 锁膨胀5-3 重量锁5-4 偏向锁5-5 其他优化(1)减少上锁时间(2)减少锁的粒度(原创 2021-10-18 13:40:58 · 2081 阅读 · 9 评论 -
【JVM】垃圾回收
文章目录JVM-垃圾回收1.如何判断对象可以回收1-1 引用计数法1-2 可达性分析算法1-3 五种引用2.垃圾回收算法2-1 标记清除2-2 标记整理2-3 复制3.分代垃圾回收3-1 回收流程3-2 GC 分析4.垃圾回收器4-1 串行4-2 吞吐量优先4-3 响应时间优先4-4 G15.垃圾回收调优5-1 调优领域5-2 确定目标5-3 最快的 GC5-4 新生代调优5-5 老年代调优JVM-垃圾回收本文章参考:黑马程序员JVM1.如何判断对象可以回收1-1 引用计数法当一个对象被其他变量原创 2021-10-18 13:21:16 · 3141 阅读 · 6 评论 -
【JVM】内存结构
文章目录JVM-内存结构1.程序计数器1-1 定义1-2 作用1-3 特点2.虚拟机栈2-1 定义2-2 演示2-3 常见问题2-4 栈内存溢出2-5 线程运行诊断3.本地方法栈4.堆4-1 定义4-2 特点4-3 堆内存溢出4-4 堆内存诊断5.方法区5-1 定义5-2 结构5-3 方法区内存溢出5-4 通过反编译来查看类的信息5-5 运行时常量池5-6 常量池与串池StringTable的关系5-7 StringTable 位置5-8 StringTable 垃圾回收5-9 StringTable 性能原创 2021-10-18 12:59:06 · 6717 阅读 · 11 评论 -
【并发编程】(学习笔记一进程与线程)-part1
推荐课程:B站黑马并发编程1.进程与线程1.1线程与进程进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。在指令运行过程中还需要用到磁盘,网络等设备。进程就是用来加载指令,管理内存,管理OI的。当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本,画图,浏览器等),也有程序只能启动一个实例进程(例如网易云音乐,360安全卫士等)。线程一个进程之原创 2021-05-27 22:35:30 · 985 阅读 · 10 评论