当前位置: 首页 > 网络应用技术

彻底了解单打模式

时间:2023-03-06 01:21:59 网络应用技术

    说到单身模式,许多人认为这很简单。理解这些台词是不好的。实际上,单打模式背后将有很多知识点。

  饥饿的汉 - 风格的实施步骤:

    首先,我们知道类加载过程是:加载,验证,准备,解析,初始化,使用和卸载。那么,此类加载过程何时呢?

    其次,JVM加载到类,也由线程完成。加载类的过程也可以安全。可以理解,该类加载的线程是相互排斥的。因此,您可以理解为什么饥饿的中文式单身模式由静态变量实现以提供示例。

  双检查锁 +挥发性关键字要实现

    首先,我们必须了解在内存中创建对象的过程:

  &EMSP的即时编译器; JVM将优化代码的执行过程,包括代码的执行顺序。因此,在上面创建对象的过程可以优化为1-2-4-3(指令重分类),这导致了该对象的不完整。对象创建。第二个线程调用获得的对象使用错误。

  字节码操作的原子性,例如i ++不是原子,为什么?JVM如何操作

  (1)从本地变量表获取i的值

  (2)将i的值添加到操作堆栈中

  (3)操作堆栈中的i是自我添加的

  (4)将您自己的I价值放入操作堆栈中

  (5)取出操作堆栈的顶部元素,然后将其放在本地变量表中

  如何处理?使用锁定机制来确保原子性

  x = 10;y = false;

  目前,当x和y取决于指令时,无法对指令进行排序。如何求解指令?volidate关键字,它修改的变量无法指示分类

  如果线程A不在主存储器中立即编写,则此时i读的值仍然为10

  如何解决可见性问题?Volidate关键字,它可以禁止使用工作内存,直接操作主内存

    通过静态内部类,您也可以简单地实现一个示例,但是此方法没有太多的知识知识。

  原始:https://juejin.cn/post/71112562262238824461