掘金 后端 ( ) • 2021-10-13 15:38
他们都能保证锁的内存语义正确的实现,但是他们的底层原理却是不一样的,Lock锁的底层是使用volatile和CAS的内存语义来实现锁的内存语义的,而synchronized用的锁是存在java对象头里的,是基于JVM的支持来实现的。
非公平锁获取时,首先会用CAS更新volatile变量,这个操作同时具有volatile读和volatile写的内存语义。
本文介绍了锁的内存语义,以及我们的Lock锁如何使用CAS和volatile的内存语义来实现锁的内存语义,以及JUC包的实现基石——CAS和volatile ... 阅读全文