[说明]
很多时候,希望某些类只有一个或有限的几个实例,典型解决方案是所谓单身(Singleton)模式。但在多线程情况下,singleton模式有可能出现问题,需要进行同步检查。如果对“检查Singleton对象是否已经创建”进行同步,则存在严重的瓶颈,所有的线程都必须待检查对象是否存在。解决方式是一种称为Double-Checked-Locking模式,其意图是将非必须的锁定优化掉,同步检查最多只发生一次,因此不会成为瓶颈。以下是Java语言实现,能够正确编译通过。
[Java代码]
public class USTax
private static USTax instance = null;
______ USTax()
private ______ static void doSync()
if(instance == null)
System.out.println ("实例不存在,创建实例...");
instance = ______;
System.out.print ln ("实例创建成功");
else
System.out.println ("实例已被创建了");
public static USTax getInstance()
if(instance == null)
System.out.println ("实例暂时不存在");
______; / /同步控制
else
System.out.println ("实例已经存在");
return ______;
.
参考答案:private
synchronized
new USTax()
doSync()
jnstance