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