并发
文章平均质量分 76
牛八里昂
这个作者很懒,什么都没留下…
展开
-
AQS -1
锁的粗化public synchronized void increase() { System.out.println("1");}public synchronized void increase2() { System.out.println("2");}public synchronized void increase3() { System.out.println("3");}上面代码等价于SynchronizedTest lock = ne原创 2021-11-13 22:12:13 · 227 阅读 · 0 评论 -
Synchronized
是jvm的内置锁,饮食锁。ReentrantLock 是显示锁synchronized在java<1.6版本的时候,性能很低,依赖java对象锁。synchronized的应用场景有三个:1、修饰实例方法2、修饰静态方法3、修饰代码块应用场景示例:1、修饰实例方法正常场景异常场景结论:synchronized修饰实例方法时,如果实例对象不同,结果会错误;只有相同的实例才能得出正确结果2、修饰静态方法结论...转载 2021-11-13 13:47:31 · 162 阅读 · 0 评论 -
volatile底层理解
并发编程中,最常用的两种机制:Synchronized和Volatile;Synchronized是共享资源在并发情况下常用方法来保证数据一致。Volatile是java虚拟机提供的最轻量级的同步机制主要适用于读多写少的场景,作用有一、保证共享变量可见性,二、内存屏障禁止指令重排序。volatile可见性说volatile可见性前,需要先了解java的内存模型,也就是JMM;问题如果多个线程同时去内存读取共享变量到各自的私有内存再做处理,那么多个线程彼此是不知道对共享变量做了什么操作的,可能就会导原创 2020-07-19 23:29:46 · 353 阅读 · 0 评论 -
CAS基础笔记
CAS的全称是compare and switch (比较并且交换),是解决多线程安全的一种方法;是一种自旋锁也是乐观锁,而synchronized锁是一种悲观锁。CAS其实是计算机的指令,格式为:(变量内存地址,变量旧值,变量新值)。CAS问题:ABA问题线程一:A->B->A线程二:A- - - >C线程一和线程二同时读取到了变量A到各自的私有内存中,线程一运行的比较快,将变量A变为B后,又变为了A;此时线程二才执行到CAS指令,根据自己保存的变量A地址去内存.原创 2020-06-27 16:13:46 · 320 阅读 · 0 评论 -
ThreadLocal笔记
ThreadLocal会copy一个变量副本放到当前线程中。结构模型每个线程都有ThreadLocal.ThreadLocalMap threadLocals = null;一、写操作我们平常的业务代码里写的:ThreadLocal<String> threadLocal = new ThreadLocal<>();threadLocal.set("bike"+value);threadLocal.set()方法底层的操作:ThreadLo原创 2020-06-26 17:05:22 · 128 阅读 · 0 评论