9、独占锁 synchronized, vector, hashtable, ReentrantReadWriteLock写锁 独占锁仅允许一个线程操作,提高安全性。10、重量级锁 synchronized 重量级锁依赖操作系统的互斥量,切换成本高。11、轻量级锁 ReentrantReadWriteLock 轻量级锁在无竞争时,通过CAS避免互斥量开销。12、偏向锁 ReentrantReadWriteLock 偏...
乐观锁:CAS:假设读多写少,读取时无需加锁,写入时检查并可能更新数据,确保一致性。悲观锁:synchronized:Java内置关键字,每次读写都会锁定资源,避免并发冲突。ReentrantLock:显式锁,功能更强大,比synchronized更灵活。自旋锁:自旋锁:让线程在等待锁时不断循环,直到获得锁。适用于多核处理器环境...
自旋锁:类似于循环操作,线程不会挂起,而是不断检查锁是否被释放,提高效率。适用于锁占用时间短且线程数量不多的场景。可重入锁:线程在获取某个对象锁后,再次执行该对象控制的同步代码块时无需再次获取锁。Java中的synchronized和ReentrantLock均是可重入锁。不可重入锁:线程获取对象锁后,执行其他对象...
本篇总结了 21 种锁,包括乐观锁、悲观锁、自旋锁、可重入锁、读写锁、公平锁、非公平锁、共享锁、独占锁、重量级锁、轻量级锁、偏向锁、分段锁、互斥锁、同步锁、死锁、锁粗化、锁消除、synchronized 关键字、Lock 接口以及 ReentrantLock 类。下面将对这 21 种锁进行简要介绍:1. **乐观锁**:...
1. 公平锁与非公平锁:公平锁确保线程按照请求锁的顺序获得锁,而非公平锁则不保证这一点,可能导致线程饥饿或优先级反转。Java中的ReentrantLock可以被构造为公平锁或非公平锁,而默认情况下它是非公平的。Synchronized关键字在Java中也实现了非公平锁机制。2. 可重入锁:也称为递归锁,允许同一线程多次...