Java社招高频考点:多线程锁的升级原理,99%的人都答不全! Java的锁升

阿兵讲科技 2025-03-15 14:10:13

Java社招高频考点:多线程锁的升级原理,99%的人都答不全! Java的锁升级原理,是为了尽可能减少线程竞争的开销,让锁的获取和释放更高效。 1. 无锁状态 在多线程环境下,如果某个对象从来没有被多个线程争抢过,JVM不会给它加锁,它处于无锁状态。 2. 偏向锁 如果一个线程在一段时间内独占某个对象,JVM会给这个对象加上偏向锁。偏向锁不会被释放或者升级。 3. 轻量级锁 当偏向锁失效时,JVM会把偏向锁升级为轻量级锁。轻量级锁的核心机制是使用CAS操作来尝试获取锁,而不是直接阻塞线程。 4. 重量级锁 如果多个线程频繁竞争一个锁,并且CAS操作不断失败,JVM会把轻量级锁升级为重量级锁。使用OS级别的Mutex互斥锁,线程会被阻塞,等待唤醒。

0 阅读:15
阿兵讲科技

阿兵讲科技

科技爱好者!