锁的分类不互斥,多个类型可以并存。
如ReentrantLock是互斥锁也是可重入锁。
1、线程是否需要锁住共享的资源:
- 锁住——悲观锁(synchronized、lock接口)
- 不锁——乐观锁(原子类、并发容器等等)
2、是否可中断:
- 可以——可中断锁
- 不可——非可中断锁
3、同一线程能否重复获取同一把锁:
- 可以——可重入锁
- 不可——不可重入锁
4、多线程是否可以共享一把锁:
- 可以——共享锁
- 不可——独占锁
5、多线程竞争是否排队:
- 排队——公平锁,先进先拿
- 插队,失败再排——非公平锁
6、等待锁释放的过程:
- 自旋锁
- 阻塞——非自旋锁