摘要: 线程安全场景备忘:1.加载引起的线程问题延迟加载-》使用延迟加载的单例(有的单例的实现并不需要延迟加载)-》避免线程多次实例化域,只实例化一次2. 非延迟加载的静态域的线程安全问题:多线程修改域的属性值。注意,这个示例不存在场景1的问题。因为域是静态域且非延迟加载,并且该域私有,这样该域只会实例化一... 阅读全文
posted @ 2011-12-20 20:19 highriver 阅读(694) 评论(0) 推荐(0) 编辑
摘要: 一。非静态域的延迟加载使用DCL实现的问题:编译器会无序写入1.什么是无序写入:按常规先初始化,后指向。真实的情况是写指向,后初始化。当执行instance =new Singleton(); 相当于执行了下列伪代码: mem = allocate(); //Allocate memory for Singleton object.instance = mem; //Note that instance is now non-null, but //has not been initialized.ctorSingleton(instance); //Invoke constructor fo 阅读全文
posted @ 2011-12-20 16:11 highriver 阅读(631) 评论(0) 推荐(1) 编辑