(1)synchronized锁的升级
首先Object objetc= new Obeject() 此时objetc中的对象头中记录的是无所状态
当加了偏向锁后,当前线程会把线程ID存入对象头中,直到有线程来竞争这把锁,不然不会释放的
当未加偏向锁,有线程竞争,就会直接升级为轻量级锁
偏向锁->轻量级锁:多个线程加锁,CAS 轻度竞争
偏向锁->重量级锁:调用wait方法
轻量级锁->重量级锁:CAS自旋不成功,且锁的竞争严重。
分段CAS(对于线程不是非常多)
(1)synchronized锁的升级
首先Object objetc= new Obeject() 此时objetc中的对象头中记录的是无所状态
当加了偏向锁后,当前线程会把线程ID存入对象头中,直到有线程来竞争这把锁,不然不会释放的
当未加偏向锁,有线程竞争,就会直接升级为轻量级锁
偏向锁->轻量级锁:多个线程加锁,CAS 轻度竞争
偏向锁->重量级锁:调用wait方法
轻量级锁->重量级锁:CAS自旋不成功,且锁的竞争严重。
分段CAS(对于线程不是非常多)