锁—Java主流锁
****************** 如有侵权请提示删除 *******************
- 乐观锁/悲观锁
- 独享锁/共享锁
- 互斥锁/读写锁
- 可重入锁/非可重入锁
- 公平锁/非公平锁
- 分段锁
- 无锁/偏向锁/轻量级锁/重量级锁
- 自旋锁/适应性自旋锁
1. 线程要不要锁住同步资源?
- 锁住-----悲观锁
- 不锁住-----乐观锁
2. 锁住同步资源失败,线程要不要阻塞?
- 阻塞-----悲观锁
- 不阻塞
。自旋锁
。适应性自旋锁
3. 多个线程竞争同步资源的流程细节有没有区别?
- 不锁住资源,多个线程中只能有一个能修改资源成功,其他线程会重试-----无锁
- 同一个线程执行同步资源时自动获取资源-----偏向锁
- 多个线程竞争同步资源时,没有获取资源的线程自旋等待锁释放-----轻量级
- 多个线程竞争同步资源时,没有获取资源的线程阻塞等待唤醒-----重量级锁
4. 多个线程竞争锁是我要不要排队?
- 排队-----公平锁
- 先尝试插队,插队失败再排队-----非公平锁
5. 一个线程中的多个流程能不能获取同一把锁?
- 能-----可重入锁
- 不能-----不可重入锁
6. 多个线程能不能共享一把锁
- 能-----共享锁
- 不能-----排他锁