自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除