public class SingleTon { private static SingleTon i; public SingleTon() { } public static SingleTon getI() { if (i==null){ synchronized (SingleTon.class){ if (i==null){ i=new SingleTon(); } } } return i; } }
时间: 2024-02-14 18:23:27 浏览: 111
Singleton两种代码实现
这段代码是一个单例模式的实现,保证在程序运行期间只有一个实例被创建。在单例模式中,构造函数通常是私有的,以防止外部实例化该类。而在这个例子中,构造函数是公有的,因此可以直接在外部实例化该类。
getI() 方法是一个静态方法,可以通过类名直接调用。它使用双重检查锁定机制来保证线程安全并返回单例对象 i。如果 i 为 null,则首先获取 SingleTon.class 的监视器锁,然后再次检查 i 是否为 null。如果 i 仍然为 null,则实例化单例对象 i 并将其赋值给 i 变量。最后返回单例对象 i。
这个单例模式的实现是一种比较高效的延迟初始化方式,并且在多线程环境下也能够保证线程安全。
阅读全文