Java虚拟机对锁做了一系列优化::
1.自旋锁和自适应::
当自旋锁尝试获取锁,尝试一定次数,如果获取不到就转为阻塞锁,这个就是锁的自适应
2.锁消除::
在一些场景下不必要加锁,当代码中出现不必要加锁的地方,JVM就会把锁消除掉
3.锁粗化::
如果出现重复的对一个对象加锁解锁,就会把重复的加锁合并成一个;JVM能够动态的检测
我们在写代码时如果优化锁和提高并发性能:::
1.缩小同步块
2.尽量不要锁住方法
3.减少请求锁的次数
4.避免人为制造“热点”
5.锁中尽量不要再包含锁
6.选择合适的锁类型或合适的工具类
非公平锁,利用的是唤醒锁的空隙来使用资源