1. synchronized和reentrantlock的区别,ReentrantLock的可重入的含义是什么
sync是悲观锁,认为并发写多读少,不给别人资源
lock是乐观锁,认为并发读多写少,给别人读
sync是非公平性锁,可能存在等待时间最长的线程却一直无法获取资源的情况
lock是公平锁,先到先得
lock是再入锁,就是说当线程试图获取锁时,发现锁已被人持有了,而持有的人正是他自己,那么就可以重新获取这个锁
2. 什么是锁的升级,降级
当JVM检测到不同的竞争状态时,会对锁进行升级和降级。
第一级,CAS 偏斜锁。几乎无竞争状态
第二级,revoke撤销偏斜锁,改为轻量级锁
第三级,使用重量级锁(如 sync)
3. 自旋锁是什么意思?
当线程尝试获取锁时,发现锁已经被占用,则循环检测锁是否可用,而不是进入挂起或睡眠状态,直到获取到锁,才退出循环。
自旋锁是不可重入锁