但是volatile和synchronized的有序是不同的:
volatile关键字禁止JVM编译器已及处理器对其进行重排序,
synchronized保证顺序性是串行化的结果,但同步块里的语句是会发生指令从排。
实现单例模式方法之一的双重校验锁方式,需要给私有变量加volatile关键字,用来保证操作指令不会重排序。
虽然new 实例对象是写在synchronized代码块中,但synchronized只是保证了代码按照顺序执行,没办法保证操作指令按顺序执行。
2024-01-29 21:18:22
但是volatile和synchronized的有序是不同的:
volatile关键字禁止JVM编译器已及处理器对其进行重排序,
synchronized保证顺序性是串行化的结果,但同步块里的语句是会发生指令从排。
实现单例模式方法之一的双重校验锁方式,需要给私有变量加volatile关键字,用来保证操作指令不会重排序。
虽然new 实例对象是写在synchronized代码块中,但synchronized只是保证了代码按照顺序执行,没办法保证操作指令按顺序执行。