示例1
似乎以下代码可以实现线程安全性,同时避免了不必要的同步...
如果(helper == null){
同步(this){
如果(helper == null){
助手= new Helper();
}
}
}
返回助手;
程序员希望保证只分配一个助手()对象,但每次调用该代码时都不想支付同步费用。
假设没有初始化的助手。然后,线程A看到助手== null并进入同步块并开始执行:
如果第二个线程B螺纹B在此呼叫的中间接管,并且辅助人员尚未完成运行构造函数,则线程B可能会在助手上进行呼叫,而其字段则保持不正确的值。