摘要: ReentrantLock 可重入锁(synchronized也是可重入锁) 必须手动释放锁,使用synchronized如果遇到异常会自动释放锁,但是reentrantLock必须手动释放,因此需要在finally中进行锁的释放。 可以使用tryLock进行尝试锁定,不管锁定与否,方法都将继续进行 阅读全文
posted @ 2021-02-13 16:20 January01 阅读(59) 评论(0) 推荐(0)
摘要: synchronized底层 JDK早期的实现是重量级锁(向操作系统申请锁)。 Hotspot实现(锁升级) 首先在锁的markword上记录第一个访问的线程ID,并没有上锁(偏向锁)。 如果有线程争用,升级为自旋锁。 默认旋10次之后升级为重量级锁,未获得锁的线程进入等待队列。 可参考http:/ 阅读全文
posted @ 2021-02-13 09:45 January01 阅读(49) 评论(0) 推荐(0)