关于volatile可以防止对象双重检查失效的理解

对象双重检查失效的主要原因还是因为对象的初始化不是原子操作,并且有无序的可能,这边所指的无序是说对象可能开辟空间后立刻将地址返回给了变量,然后再进行初始化,导致其他线程可能取到未初始化完全的对象。

而将变量加上volatile可以防止对象初始化的无序性,对象必须初始化完成后才将地址返回。

再复习一下同步的三大因素:原子性,可见性,无序性。

猜你喜欢

转载自blog.csdn.net/qqzhq/article/details/81585161