1.偏向锁:在锁对象的对象头中记录一下当前获取到该锁的线程ID,该线程如果再次获取该对象的的锁就可以直接获取锁(锁的重入)
偏向锁主要是当前只有一个线程来竞争锁
2.轻量级锁:是偏向锁升级的,当前只有一个线程获取到锁是偏向锁,如果出现第二个线程来竞争锁的话,偏向锁就会升级为轻量级锁
轻量级锁是通过jvm层面的自旋事先的,不会阻塞线程,不涉及到线程的“用户态和内核态”两个态之间来回切换,不会像重量级锁占用资源,但是会占用cpu
3.重量级锁:如果轻量级锁自旋多次(默认为50次),依然获取不到锁则升级为重量级锁,线程阻塞,用户态和内核态”之间的切换.
更详细的信息可以参考大神文章
https://www.cnblogs.com/aspirant/p/11470858.html
网友评论