前言
- 上文学习了Java对象内存分布模型。
- 同时也了解到了锁的信息时存储在
markword
头信息中的。之前我们也通过几个案例分析了markword的存储情况。这里需要注意的是不要使用lombok插件才能看到hashcode。 - java中针对并发场景的问题提出了锁的概念,上锁我们可以使用原生的
synchronized
也可以使用Lock
相关锁。同时结合volatile使用实现线程之间通信。关于锁的使用我们下章节详谈,今天我们来了解锁内部有关锁的状态或者说不同时间的不同状态锁及其切换过程 - 在JDK1.6之前synchronized就是重量级,1.6之后JDK对内部锁进行重新定义:偏向锁、轻量级锁、重量级锁
三者性能分析
- 不要着急为什么不先说说三种是什么样的锁的?因为我觉得我们更应该先了解三种锁有啥不同,JVM为什么要进行锁升级、降级
- 首先计算机分为用户态、内核态;内核态可以理解成计算机本家人,用户态理解成远方亲戚
- 同样需要操作计算机硬件(钱)的时候,肯定内核态(家人)会有更高的支配权,而用户态(亲戚)只能有很低的支配权。