轻量级锁操作流程
2016-06-12 23:00:19 0 举报
轻量级锁是一种针对当前读多写少的并发场景所采用的同步机制,它可以让多个线程同时持有共享资源的锁,从而实现更高效的并发访问。当一个线程想要获取锁时,它会尝试通过CAS操作来更新对象的头信息。如果更新成功,那么这个线程就拥有了锁,可以继续执行后面的操作;如果更新失败,说明有其他线程已经持有了锁,此时这个线程就需要等待一段时间,再重新尝试获取锁。在等待期间,如果有其他线程释放了锁,那么这个线程就可以立即获得锁并继续执行。轻量级锁的主要优点是减少了线程阻塞和唤醒的开销,提高了系统的并发性能。
作者其他创作
大纲/内容
CAS,尝试将object mark word轻量级指针指向当前lock record,lock record指向object mark word
成功
持有锁并执行锁内代码
CAS是否成功
将重量级锁指针指向object monitor,挂起当前线程
拷贝object mark word 到lock record
失败
执行moniorexit
释放锁并唤醒被释放的线程
执行moniorenter
结束
等待解锁的时候被唤醒,重复monitorenter
为当前线程分配Lock Record
CAS,如果object mark word轻量级指针仍旧指向当前Lock Record,且拷贝的mark word信息与object mark word信息一致则替换
是否替换成功
0 条评论
下一页