概述
CAS算法
一般情况下是一个自旋操作,即不断的重试
自旋锁
http://blog.leanote.com/post/medusar/%E8%87%AA%E6%97%8B%E9%94%81
自适应, 可重入和不可重入,优缺点(公平性,上下文切换,cpu使用率)
定义
busy_waiting
线程同步的实现机制
critical section
是每个线程中访问临界资源的那段代码,不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它进行访问,临界资源是一次 仅允许 一个线程使用的共享资源
自旋锁与互斥锁
自旋锁与互斥锁都是为了实现保护资源共享的机制。
无论是自旋锁还是互斥锁,在任意时刻,都最多只能有一个保持者。
获取互斥锁的线程,如果锁已经被占用,则该线程将进入睡眠状态;获取自旋锁的线程则不会睡眠,而是一直循环等待锁释放。
乐观锁
ABA是乐观锁常见的问题
偏向锁
死磕Synchronized底层实现--偏向锁
Java并发编程:Synchronized底层优化(偏向锁、轻量级锁)
重量级锁
Mutex Lock
重量级锁、轻量级锁和偏向锁之间转换
JAVA对象结构-MarkWord
Java对象结构与锁实现原理及MarkWord详解
https://blog.csdn.net/scdn_cp/article/details/86491792