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