锁作为并发共享数据,保证一致性的工具。在java平台有多种实现(synchronized 、ReentrantLock等)。
常见的锁
1、自旋锁;2、自旋锁的其它种类;3、阻塞锁;4、可重入锁;5、读写锁;6、互斥锁;
7、悲观锁;8、乐观锁;9、公平锁;10、非公平锁;11、偏向锁;12、对象锁;13、线程锁;
14、锁粗化;15、轻量级锁;16、锁消除;17、锁膨胀;18、信号量
上面的是很多锁的名称,这些分类有指锁的状态、锁的特性、锁的设计
公平锁/非公平锁
公平锁指多个线程按照申请锁的顺序来获取锁。
非公平锁指多个线程获取锁的顺序并不是安装申请锁的顺序,有可能后申请的线程比先申请的线程先获取锁。
有可能会造成优先级反转或者饥饿现象。