关于synchronize的实现原理,请看移步这篇文章:美团一面:说说synchronized的实现原理?问麻了。。。。CAS是一种无锁算法,它在硬件级别提供了原子性的条件更新操作,答应线程在不加锁的情况下实现对共享变量的修改。在Java中,CAS机制被广泛应用于java.util.concurrent.atomic包下的原子类以及高级并发工具类如AbstractQueuedSynchronizer(AQS)的实现中。
关于synchronize的锁升级,请移步这篇文章:京东二面:Sychronized的锁升级过程是怎样的?
这里指的注意的是,在JDK1.9之前CAS机制被封装在sun.misc.Unsafe类中,在JDK1.9之后就使用了CAS实现原理
jdk.internal.misc.Unsafe。这点由java.util.concurrent.atomic包下的原子类可以看出来。而sun.misc.Unsafe被许多第三方库所使用。
关于openjdk的源码,本文源码版本为1.9,如须要该版本源码或者其他版本下载方法,请关注本公众号【码农Academy】后,后台回复【openjdk】获取而hostspot中的Unsafe_CompareAndSetInt函数会统一调用Atomic的cmpxchg函数:
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |