Java 中实现线程同步用得最多的是 synchronized
,但使用 synchronized
本质是锁升级的过程。当升级到重量级锁之后会有性能问题。而且无法当并发数下来之后,无法进行“锁降级”操作。
而 ReentrantLock
本质是 CAS 操作,都是在用户态进行,没有涉及到重量级锁的内核态指令,而且能够手动控制获取锁和释放锁。
Java 中实现线程同步用得最多的是 synchronized
,但使用 synchronized
本质是锁升级的过程。当升级到重量级锁之后会有性能问题。而且无法当并发数下来之后,无法进行“锁降级”操作。
而 ReentrantLock
本质是 CAS 操作,都是在用户态进行,没有涉及到重量级锁的内核态指令,而且能够手动控制获取锁和释放锁。
Update your browser to view this website correctly. Update my browser now