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

挥发性在单数模式下的作用

时间:2023-03-09 12:54:55 网络应用技术

  以双重检查单身模式为例,首先应用代码:

  如上所述,Singleton使用挥发性修改,我们都知道挥发性的作用

  那么挥发性的究竟是什么作用?

  实际上,在单数模式下,挥发性的作用主要是禁止说明

  所以为什么?

  在上面的代码中,singleton = new Singlet();可以分解为以下步骤:

  但是步骤2,3可以交换,也就是说,但是根据java语言规范在线程内语义上,它允许在单个线程中允许这些语言中的这些内容,而无需更改单线程程序的结果的排序执行,这是指步骤2和3发生的,但是对于单个线程,在第一个访问对象时,结果是正确的,因此即使排序也无关紧要。

  但是,在多线程环境中,会有问题,例如,以下多线程重型案例:

  T1分配对象空间T2设置了指向分布式内存空间T3的单例,以确定Singleton是否为空T4。由于Singleton不是零,因此线程B将访问Singleton引用的对象。在重分类的情况下,这会导致线程B判断Singleton在T3中并非null,那么Thread B将使此Singleton可以做其他事情。然后,此时,该单身人士没有初始化,然后将是。如果您报告错误,则存在问题。

  就正常过程而言,在T2时间线程A应该初始化Singleton,因此线程B在

  可能会有一个小伙伴感觉像门,然后我会根据规范再次说出来:

  根据代码,如果线程A在第12行中,则为Singleton = new Singleton();然后进行重排列,然后螺纹B是第9行中的第一个if(单例== null),然后让返回的singleton做其他事情并导致错误。

  说到这一点,我相信您几乎了解到,如果您不知道,您可以看两次。

  因此,为了解决此问题,挥发性用于修改单例,以禁止分类可能发生的问题。

  作者:代码Pippi Shrimp

  创建并不容易。如果这篇博客文章对您有帮助,我希望朋友可以连续三个点击三次,谢谢您的支持,我们下次见到您?