JUC
文章平均质量分 95
洛 笙
归来仍是少年
展开
-
volatile底层实现原理解析
文章目录保证可见性原理不保证原子性的原因防止指令重排 三大特性:1.保证可见性 2.不保证原子性 3.防止指令重排 保证可见性原理 在volatile中是采用锁总线的方式实现可见性,在总线被锁期间其他CPU不可以访问主内存中变量,这种方式效率太低。 现在的可见性是由java和CPU共同完成的,利用CPU的缓存一致性来保证可见,原理如下: 要想理解可见性原理首先得知道JMM的8个原子操作,如下图所示红色字体 首先线程B修改了flag的值,并传递给工作内存 工作内存将flag标记为**M(Modify)**状原创 2020-07-03 16:07:36 · 879 阅读 · 0 评论 -
JUC中的常见问题
文章目录Synchronized和Lock锁生产者和消费者的问题 Synchronized和Lock锁 1.Synchronized 内置java关键字,Lock是一个java类 2.Synchronized 无法判断获取锁的状态,Lock可以判断是否获取到了锁 3.Synchronized 会自动释放锁,Lock必须手动释放 4.Synchronized 一个线程获取锁并被阻塞后,其他线程只能等待,Lock不会一直等待tryLock尝试获取 5.Synchronized 可重入锁,不可中断,非公平锁,Lo原创 2020-05-14 11:53:55 · 591 阅读 · 0 评论