美文网首页随笔
<--个人成长笔记系列-->知识点解析之synchronized

<--个人成长笔记系列-->知识点解析之synchronized

作者: 天痕丿泪倾城 | 来源:发表于2019-10-08 16:12 被阅读0次

    JAVA知识点:

        (承接synchronized的实现原理) 对象存储:

            OOP-Klass 模型 去描述Java对象的实例,OOP表示普通对象指针;Klass表示描述 对象实例 的具体逻辑

            HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)

        (掌握)对象头:如果对象是数组类型,则JVM用3个字存储对象头;否则,使用2个字

    Mark Word

    对象头相关文章:https://www.jianshu.com/p/ff6591b26da5https://www.jianshu.com/p/3d38cba67f8b

        (了解)CAS:全称Compare and swap,字面意思:”比较并交换“,一个 CAS 涉及到以下操作:

    ````

    我们假设内存中的原数据V,旧的预期值A,需要修改的新值B。

    1、比较 A 与 V 是否相等。(比较)

    2、如果比较相等,将 B 写入 V。(交换)

    3、返回操作是否成功。

    ````

    当多个线程同时对某个资源进行CAS操作,只能有一个线程操作成功,但是并不会阻塞其他线程,其他线程只会收到操作失败的信号。可见 CAS 其实是一个乐观锁。

        (了解)归纳CAS的应用场景:

    1、CAS 的使用能够避免线程的阻塞。

    2、多数情况下我们使用的是 while true 直到成功为止。

        (了解)CAS 缺点:

    1、ABA 的问题,就是一个值从A变成了B又变成了A,使用CAS操作不能发现这个值发生变化了,处理方式是可以使用携带类似时间戳的版本AtomicStampedReference

    2、性能问题,我们使用时大部分时间使用的是 while true 方式对数据的修改,直到成功为止。优势就是相应极快,但当线程数不停增加时,性能下降明显,因为每个线程都需要执行,占用CPU时间。

    相关文章

      网友评论

        本文标题:<--个人成长笔记系列-->知识点解析之synchronized

        本文链接:https://www.haomeiwen.com/subject/fonuectx.html