并发编程
文章平均质量分 94
bright_qian
这个作者很懒,什么都没留下…
展开
-
并发编程锁原理总结
ReentrantLockReentrantLock主要利用CAS+AQS(AbstractQueuedSynchronizer)队列来实现。它支持公平锁和非公平锁,两者的实现类似。CAS:Compare and Swap,比较并交换。CAS有3个操作数:内存值V、预期值A、要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。该操作是一个原子操作,被广泛的应用在Java的底层实现中。在Java中,CAS主要是由sun.misc.Unsafe这个类通过JNI调用CPU底层原创 2021-05-04 16:00:25 · 313 阅读 · 0 评论 -
synchronized原理和锁膨胀过程
对象头HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。HotSpot虚拟机的对象头(Object Header)包括两部分信息,第一部分用于存储对象自身的运行时数据, 如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等等,这部分数据的长度在32位和64位的虚拟机(暂 不考虑开启压缩指针的场景)中分别为32个和64个Bits,官方称它为“Mark Wor原创 2021-04-26 22:51:20 · 300 阅读 · 0 评论