Java并发系列(一)Java并发机制底层实现原理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lwl2014100338/article/details/82809872

volatile

线程访问共享变量,为了确保共享变量能被准确和一致的更新,线程应该确保通过排他锁单独获得这个变量

实现原理

有volatile变量修饰的共享变量在写操作时会多出两行汇编代码,Lock前缀指令在多核处理器下会引发两件事情
(一)将当前处理器缓存行数据写回到系统内存
(二)这个写回内存操作会使其他CPU中缓存了该内存地址的数据无效

synchronize

Java中每一个对象都可以作为锁,具体表现形式有以下三种
(一)对于普通同步方法,锁是当前实例对象
(二)对于静态同步方法,锁是当前类中的Class对象
(三)对于同步方法块,锁是synchronize括号里配置的对象

实现原理

JVM规范中看到synchronize在JVM的实现原理是基于进入和退出Monitor对象实现方法同步和代码块同步,但两者的实现细节有所不同

原子操作的实现原理

处理器实现原子操作

(一)使用总线锁保证原子性
(二)使用缓存保证原子性

Java实现原子性

(一)使用循环CAS实现原子性
(二)使用锁机制实现原子操作

猜你喜欢

转载自blog.csdn.net/lwl2014100338/article/details/82809872