- 博客(2)
- 收藏
- 关注
原创 锁膨胀,偏向锁,轻量级锁,重量级锁
我们都知道synchronized内部有四种状态,分别是:无锁、偏向锁、轻量级锁和重量级锁,所以要搞懂这几种锁之间的变化我们得对synchronized有个大致的了解。首先说一下synchronized在底层的实现,他是基于进入和退出Monitor对象(每一个对象都会有一个monitor与之关联)来实现方法同步和代码块同步的,对于方法同步官方并没有具体指出是如何实现的,而对于同步代码块是通过monitorenter和monitorexit指令来实现的。
2024-02-27 22:31:05 790
原创 ConcurrentHashMap 学习笔记
我们可以到整个`get()`方法里没有一个地方进行加锁,唯一一个比较特殊的地方就是通过`key`的`hash`值找到的下标处节点的`hash < 0`,hash值小于0的节点只有红黑树根节点和`ForwardingNode`,红黑树暂且不说,而不加锁的奥秘就是在`ForwardingNode`的`find()`方法。对于节点是`ForwardingNode`的情况,说明当前桶里的元素已经迁移到新数组去了,`ForwardingNode`的`find()`方法就是直接去新数组里进行查找。......
2022-08-26 19:58:24 356
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人