文章字数:180,阅读全文大约需要1分钟
mutex
synchtonized
膨胀为重量级锁时使用mutex
实现的- 操作系统提供的互斥锁
mutex
是重量级锁,线程获取不到锁之后就会进入休眠状态,CPU
会转换到内核态,而代码的运行区在用户态。切换会导致性能降低,所以是重量级。spin_lock
是linux
提供的自旋锁
锁膨胀
- 偏向锁,使用
CAS
判断对象头线程标记是不是本身,性能最好,不会进行用户态和内核态的切换 - 轻量锁,使用
CAS
设置当前线程为对象头的标记 - 重量锁,使用
mutex
的互斥,需要用户态和内核态切换,消耗资源。