在java代码中Double checking 并不能保证代码的正确性。
原因有二:
一. Object obj = new Object();
会先给obj赋值,然后在调用对象的构造函数初始化内存。现在得到的obj可能没有完全构造。
二. 编译器会优化代码,可能会打乱代码执行顺序。
在java代码中Double checking 并不能保证代码的正确性。
原因有二:
一. Object obj = new Object();
会先给obj赋值,然后在调用对象的构造函数初始化内存。现在得到的obj可能没有完全构造。
二. 编译器会优化代码,可能会打乱代码执行顺序。