偏向锁-学习

来源:互联网 发布:超级优化好看吗 编辑:程序博客网 时间:2024/04/29 13:15

概述


JVM作者认为大多数情况下,共享资源并不存在多线程竞争的情况,也就是说共享资源的锁老是由同一个线程获取到,线程重入的情况非常多。因此为了减少一些不必要的CAS操作,引入了偏向锁。


偏向锁


在synchronized加载加锁-线程可重入一文的末尾提到了锁偏向的问题,如果程序中不存在对共享资源的竞争问题,那么获取锁和释放锁的CAS同步操作是可以不用做的。

偏向锁的目的正是为了在无竞争的情况下,减少线程重入引起的获得锁、释放锁带来的CAS同步开销。

偏向锁几个要点:
1、线程已经得到锁了;
2、避免线程重入带来的开销;
3、当线程与线程之间发生对共享资源的争夺,那么偏向锁就会解除;
4、竞争情况严重的话,很难保证锁一直偏向。


参考的文章


1、java锁优化
2、深入JVM锁机制1-synchronized

1 0
原创粉丝点击